dos命令及批处理 tcy
发布日期:2021-06-29 14:44:05 浏览次数:3 分类:技术文章

本文共 12129 字,大约阅读时间需要 40 分钟。

 

本人最近在做一个项目,要用到批处理,汇总网上各位前辈。为便于今后使用特汇总如下。所有实例本人均经过windows10测试。建议你用notepad++运行。python的可在pycharm中测试,附代码。批处理详细的请参考下面的网站,写的非常详细,推荐参阅。主要内容有dos命令,dos界面的设置,dos批处理,python运行批处理代码。

1.dos 命令    

序号 类别 命令 说明
1 文件/夹 dir 显示当前目录中的文件和子目录
2   dir /a 显示当前目录中的文件和子目录(含隐藏,系统文件)
3   dir c: /a:d 显示 C 盘当前目录中的目录
4   dir c: /a:-d 显示 C 盘根目录中的文件
5   dir c: /b/p /b只显示文件名,/p分页显示
6   dir *.exe /s 显示当前目录和子目录里所有的.exe文件
7 文件/夹 path  为可执行文件显示或设置一个搜索路径
8 文件/夹 xcopy  复制文件和目录树(/i无文件夹创建,有会有询问)
9   xcopy d:mp3 e:mp3 /s/e/i/y 复制 d:mp3 文件夹、所有子文件夹和文件到 e: 覆盖已有文件
11 文件/夹 deltree 删除文件夹和它下面的所有子文件夹还有文件
12 文件/夹 ICACLS 显示、修改、备份或还原文件和目录的 ACL
13 文件夹 CHDIR 显示当前目录的名称或将其更改。
14 文件夹 cd 显示当前目录
15   C:\Users>cd Administrator 进入目录
16   cd /d  退回到根目录
17   cd.. 退回到上一级目录
18   cd /d d:user 同时更改盘符和目录
19 文件夹 tree d: 显示D盘的文件目录结构
20 文件夹 md d:user(mkdir d:user) 创建文件夹:如d:user不存在创建目录
21 文件夹 rd abc 删除当前目录里的abc子目录,要求为空目录
22   rd /s/q d:temp 删除d:temp文件夹及其子文件夹和文件(/q安静模式)
23 文件 type c:boot.ini 显示文本文件的内容(有可能乱码)
24   type *.txt 显示当前目录里所有.txt文件的内容
25 文件 copy c:a.txt d:b.txt 复制c:a.txt到d:并重命名为b.txt
26   copy con a.txt 屏幕输入存a.txt(Ctrl+Z结束输入)con屏幕prn打印机nul空设备
27   copy 1.txt + 2.txt 3.txt 合并1.txt+2.txt=3.txt文件;如无3.txt保存到1.txt
28   copy test.txt + 复制文件到自己,实际上是修改了文件日期
29 文件 del d:test.txt 删除指定文件(非隐藏、系统、只读文件;不能删除文件夹)
30   del *.*: 删除当前文件夹下所有文件
31   del /q/a/f d:temp*.* 删除d:temp文件夹里面所有文件(含隐藏,只读,系统文件,不含子目录)
32   del /q/a/f/s d:temp*.* 删除d:temp及子文件夹里面所有文件(含隐藏,只读,系统文件,不含子目录)
33   ERASE 删除一个或多个文件。
34 文件 move 路径/文件名 移动文件并重命名文件和目录
35 文件 ren d:temp tmp 文件更名(支持对文件夹的重命名)
36 文件 replace 替换文件
37 文件 attrib  显示或更改文件属性。
38 文件 find  在一个或多个文件中搜索一个文本字符串。
39   find  /i "abc" c:a.txt(/i忽略大小写) 在 c:a.txt 里查找含 abc的行;找不到返回码为1
40   find /c "abc" c:test.txt 显示含 abc 的行的行数
41   FINDSTR 在多个文件中搜索字符串findstr "2005" temp.txt
42 文件 CACLS 显示或修改文件的访问控制列表(ACL)。
43 文件 FC 比较两个文件或两个文件集并显示它们之间的不同
44      
45 网络 arp  显示、修改局域网的IP地址-物理地址映射列表(当前的arp缓存)
46    =a  显示arp缓存
47    =d  删除一条缓存纪录
48    =s  添加一条缓存纪录
49 网络 ftp  文件传输;不用装cuteftp
50 网络 ipconfig 显示当前机器的网络接口状态-显示、修改TCP/IP设置
51   ipconfig /all 显示详细信息
52   /release  释放当前ip
53   /renew  重新申请ip
54   /flushdns  刷新dns缓存
55   /registerdns  重新栽dns服务器上注册自己
56 网络 ping 主机ip或名字 进行网络连接测试、名称解析(网络不通查看防火墙)
57 网络 msg  给用户发送消息
58 网络 net  网络命令集及用户管理
59   net /? 获取具体帮助信息
60   net view \\主机  查看共享
61   net start/stop 服务名  来启动和停止服务
62 网络 netstat -n 查看主机当前tcp/ip连接状态,如ip.port状态
63   netstat 主机  
64   netstat -ano|find "64364" 端口
65 网络 nslookup 排除dns错误的利器。是一个交互的工具。
66 网络 telnet  字符方式远程登陆
67 网络 tracert 主机 查看从你自己到目标逐机到底经过了那些路径
68   tracert www.baidu.com  会看到经过的一个个路由节点,
69   pathping 主机 类似tracert,可显示一些tracert不能显示出来的信息
70 系统 at  安排在特定日期和时间运行命令和程序
71 系统 CLS 清除屏幕。
72 系统 COLOR 设置默认控制台前景和背景颜色。
73 系统 EXIT 退出 CMD.EXE 程序(命令解释程序)。
74 系统 FORMAT 盘符: 格式化一分区(dos下用fat文件系统格式化windows ntfs)
75 系统 HELP 命令名 可查看该命令的帮助信息;如find /?
76 系统 LABEL 显示卷标,同时提示输入新卷标
77   LABEL c:system 设置C盘的卷标为 system
78 系统 MORE c:test.txt 逐屏显示 c:test.txt 的文件内容
79 系统 PAUSE  
80 系统 powercfg 控制系统上的电源设置
81 系统 reg  注册表控制台工具
82 系统 sc  系统服务设置与控制
83 系统 shutdown 立即或定时关机或重启
84 系统 smartdrv.exe 加载磁盘缓存,参数是缓存的大小,单位是kb
85 系统 tskill  结束进程
86   taskkill 结束进程(比tskill高级)
87   tasklist 显示进程列表(Windows XP Home Edition中没有)
88 系统 VER 显示系统版本
89 系统 VOL 显示卷标
90 日期 DATE 显示当前日期,并提示输入新日期,按"回车"略过输入
91 日期 DATE/t 只显示当前日期,不提示输入新日期
92 时间 TIME 显示当前时间,并提示输入新时间,按"回车"略过输入
93 时间 TIME/t 只显示当前时间,不提示输入新时间
94 其他 DISKPART 显示或配置磁盘分区属性。
95   DOSKEY 编辑命令行、调用 Windows 命令并创建宏。
96   DRIVERQUERY 显示当前设备驱动程序状态和属性。
97   ENDLOCAL 结束批文件中环境更改的本地化。
98   FSUTIL 显示或配置文件系统的属性。
99   FTYPE 显示或修改用在文件扩展名关联的文件类型。
100   GPRESULT 显示机器或用户的组策略信息。
101   COMP 比较两个或两套文件的内容。
102   COMPACT 显示或更改 NTFS 分区上文件的压缩。
103   CONVERT 将 FAT 卷转换成 NTFS。您不能转换当前驱动器。
104   CHCP 显示或设置活动代码页数。
105   ASSOC 显示或修改文件扩展名关联。
106   BREAK 设置或清除扩展式 CTRL+C 检查。
107   BCDEDIT 设置启动数据库中的属性以控制启动加载。
108   CHKDSK 检查磁盘并显示状态报告。
109   CHKNTFS 显示或修改启动时间磁盘检查。
110   SUBST 映射磁盘--显示目前所有的映时 subst z: serverd输入z:就可访问serverd
112   subst z: /d  取消该映射

 

2.1C:\Users\Administrator>help

    有关某个命令的详细信息,请键入 HELP 命令名

2.3.win7下dos命令窗口常用属性

1.1.进入    # 首先按下"win+R"打开运行窗口,然后输入“cmd”回车打开命令窗口。    # dos命令窗口复制,粘贴1.2.设置    # 将鼠标放在dos命令窗口的上面,右击选择“属性=>选项=>勾选‘编辑选项’中的    #‘快速编辑模式’和‘插入模式’”点击“确定”后就可以快速输入了;2.1粘贴    # 将需要复制到命令窗口中的内容复制好,然后回到dos命令窗口中在光标闪烁的位置点击    #‘鼠标右键’,就可以看到内容内容复制到这里了。2.2复制    # 将需要复制的内容选中好,然后再按下“回车”键,那要复制的内容就复制在剪切板中,    # 在需要的地方用'Ctrl+V'就行了。# 3.设置字体的大小、布局(屏幕缓冲区的大小、窗口大小、窗口位置)和背景颜色;    # 1、右击选择“属性=>字体”中可以根据需要自由选择字体的大小粗细;    # 2、右击选择“属性=>布局”中可以根据需要自由选择缓冲区的大小、窗口大小、窗口         # 打开时出现在屏幕中的位置;    # 3、dos命令窗口中默认是白色的字和黑色的背景,若是需要设置的话,可以右击选择         # “属性=>颜色”中可以根据需要自由选择字体以及背景的颜色。    # 1、上面中设置字体的颜色也可以通过命令“color 数字”来实现;    # 2、dos命令窗口中默认的title是“管理员:C:\Windows\system32\cmd.exe”,若不想要         # 也可以改,通过命令“title 标题名”(只对当前命令行窗口有效)修改;    # 3、改变Windows的命令提示,默认是“C:\Users\Administrator>”,         # 可通过命令“prompt 提示内容”(只对当前命令行窗口有效)修改;# 4.修改dos命令窗口中的编码格式:    # 命令窗口默认页面编码gbk,若是需要则可以通过命令"chcp "来修改;    # chcp 65001  UTF=8 ;    # chcp 936    默认的GBK(简体中文) ;    # chcp 437    英语 ;

3.python运行批处理

#!/usr/bin/env python3# -*- coding: utf-8-*-import subprocess,osfrom subprocess import PIPEtmpfile='tmp.bat'while os.path.isfile(tmpfile):    tmpfile=tmpfile+tmpfilewith open(tmpfile, 'w+', encoding='GBK', errors='ignore') as f:    text="""@echo off::将你的批处理写在下面:echo success     """    f.write(text)p=subprocess.Popen([tmpfile,'1010','Tom'],shell=False,stdin=PIPE,stdout=PIPE,stderr=PIPE,text=True,encoding='CP936')out,err=p.communicate('11')print(out,err)if os.path.isfile(tmpfile):    os.remove(tmpfile)

4.批处理   2020/2/15

详细参考: 写的非常好,详细。

 

类别 命令 说明
批处理 REM 和 :: 注释;行内注释用%...%
  GOTO 标签 跳转命令
  :Label 标签
  CALL [drive:][path]filename [参数] 调用批处理 call G:\Futures\database\tmp.bat
  START /d /wait /b 程序 启动单独窗口(无/b)运行程序 start mysql /wait -u root -proot
  CHOICE /C YN /M "yes no" 选择:根据输入不同的字符(Y/N)获得不同的errorlevel=1/2
     
Echo echo [{on│off}] [message] 打开回显或关闭请求回显功能,或显示消息
  @echo off   关闭回显
  echo hello Word!  打印字符串;echo.(,;)输出回车换行
换行符 echo.  [,:;/\+] 空行 echo\Today is Friday.>>temp.txt
动态变量    
  %CD%                    代表当前目录的字符串  显示C:\Users\Administrator
  %DATE%                  当前日期echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%^:%time:~3,2%
  %TIME%                  当前时间(精确到ms) 输出2020-02-14 19:51
  %RANDOM%                随机整数,介于0~32767
  %ERRORLEVEL%            当前 ERRORLEVEL 值
  %CMDEXTVERSION%         当前命令处理器扩展名版本号
  %CMDCMDLINE%            调用命令处理器的原始命令行
  echo %SystemDrive%       显示系统盘盘符C:系统变量可以直接引用
查看变量    
  set                      显示系统和自定义变量(不含动态变量)
  set p 显示所有以p开头的变量,要是一个也没有就设errorlevel=1
  echo %%   转义%字符 显示%
  echo  %cd%   获取当前进入的工作目录 显示G:\Futures\database
  echo  %~dp0 获取当前bat文件的位置 显示G:\Futures\database\
     
  echo %p%                 显示变量p代表的字符串,即aa1bb1aa2bb2
  echo %p:~6%             [7,...] 显示变量p中第6个字符以后的所有字符,即aa2bb2
  echo %p:~6,3%          [7,8,9] 显示第6个字符以后的3个字符,即aa2
  echo %p:~0,3%          [1,2,3] 显示前3个字符,即aa1
  echo %p:~-2%             显示最后面的2个字符,即b2
  echo %p:~0,-2%           显示除了最后2个字符以外的其它字符,即aa1bb1aa2b
变量替换 echo %p:aa=c%            用c替换变量p中所有的aa,即显示c1bb1c2bb2
  echo %p:aa=%             将变量p中的所有aa字符串置换为空,即显示1bb12bb2
  echo %p:*bb=c%           第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2
设置变量    
  setp=%p:*bb=c%          设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2
  set  x=1 设置变量:x
  set /a x=20/3   (x/10) 支持运算符,有小数时用去尾法x=6
  set /a x=”1&0″           ”与”运算,要加引号。其它支持的运算符参见set/?
  set x=                   取消p变量
     
用户输入 set /p x=Please Input: 将用户的输入赋值给一个变量p
  echo x= %x%  引用变量: 显示x=10
  echo x= %1 引用变量:命令行参数1
  注意: 变量在复合语句(if,for)是一次性全部替换;若复合语句中修改变量
    应在复合语句前后加SetLocal EnableDelayedExpasion,EndLocal
if选择    
  IF [NOT] EXIST filename command if exist config.sys edit config.sys
  IF [NOT] string1==string2 command "%age%"=="20";%age%== 20;{%age%}=={20};{%name%}=={} 空str
    if /i {%name%}=={"tom"} ( echo 1 )else (echo 0 )   /i不区分大小写
    if %name%=="Tom" (   #if语句必须有左括号
    echo 1)else (               #else必须是)else(格式;下面一行可以提上来
    echo 0 )   
  IF [NOT] ERRORLEVEL number command 方法一:dir C1: 
      Set errorcode=%errorlevel% 上条命令返回值用于复合语句(for,if)无变量延迟
      if %errorlevel% == 0 echo Run Err!
    方法二:setlocal enabledelayedexpansion 开启变量延迟
      dir C1:
  注:在cmd环境中无else子句   if !errorlevel! == 0 echo Run Err!
     
for for {%variable│%%variable} in (set) do command [CommandLineOptions]  
多处理    
  & 顺序执行多命令不管是否执行成功 dir z: & dir c:
  && 顺序执行多命令,出错后将不执行后面命令
  find "ok" C:a.txt && echo 成功 如找到"ok"字样,就显示"成功",找不到就不显示
  || 顺序执行多条命令,当执行正确命令后将不执行后面的命令
  find "ok" C:a.txt || echo 不成功 如找不到"ok"字样,就显示"不成功",找到了就不显示
管道 |  
  echo Tom|findstr /i "to">nul && echo 无错误 管道命令:前面结果作为后面输入
  dir *.* /s/a | find /c ".exe" 输出当前文件夹及子文件夹里.exe文件个数
重定向    
  > / >> (先清除在写/附加文件尾部) 输出重定向命令--将屏幕内容输出到文件(不存在则创建)
  type c:test.txt >prn(>con;>a.txt) 内容输出到打印机(屏幕,文件)
  copy c:test.txt f: >nul 拷贝文件不显示提示信息
  < 从文件获得输入:echo 2005-05-01>temp.txt;date <temp.txt
  >&  将一个句柄的输出写入到另一个句柄的输入中。
  <&  从一个句柄读取输入并将其写入到另一个句柄输出中。
转义字符 ^  
  echo ^^W ^> ^W>c:test.txt 生成的文件内容为 ^W > W
参数    
  %0...%9 %* 命令行参数(%* 所有参数)
  %~1 删除引号("),扩充 %1
  %~f1 将 %1 扩充到一个完全合格的路径名
  %~d1 仅将 %1 扩充到一个驱动器号
  %~p1 仅将 %1 扩充到一个路径
  %~n1 仅将 %1 扩充到一个文件名
  %~x1 仅将 %1 扩充到一个文件扩展名
  %~s1 扩充的路径指含有短名
  %~a1 将 %1 扩充到文件属性
  %~t1 将 %1 扩充到文件的日期/时间
  %~z1 将 %1 扩充到文件的大小
  %~$PATH : 1 查找在PATH环境变量目录将%1扩充到找到的第一个完全合格名称或空字符串
  组合修定符来取得多重结果:  
  %~dp1 只将 %1 扩展到驱动器号和路径
  %~nx1         只将 %1 扩展到文件名和扩展名
  %~dp$PATH:1  在 PATH 环境变量中查找 %1,找到的第一个文件的驱动器号和路径
  %~ftza1       将 %1 扩展到类似 DIR 的输出行
设置    
  SetLocal EnableExtensions 启用"命令扩展名" 默认为启用
  SetLocal DisableExtensions 停用"命令扩展名"
  SetLocal EnableDelayedExpasion 启用"延缓环境变量扩充"
  SetLocal DisableDelayedExpansion 停用"延缓环境变量扩充" 默认为停用
  EndLocal  恢复到使用SETLOCAL语句以前的状态;批处理结束系统会自动恢复默认值
说明:目录路径:用\不用/;空格用双引号del "d:\program files\file\my.txt";名称不含:\ / : * ? " < > 

 

批处理-for 2020/2/15

 

匹配文件:  
格式:for %%i in(set) do 命令 [参数] 只匹配文件:i单字母;()集合;(cwd环境中用%i)
for %%i in (t*.*,???.txt) do echo %%i   显示当前目录匹配文件(不含路径;???文件名有1-3个字符)
for %%i in (d:\user\*.doc) do @echo %%i  显示指定目录匹配文件(含路径;d:\*.doc反斜杠可省)
   
匹配当前目录:(不含子目录)  
格式:for /D %%i in(set) do 命令 [参数] /d只匹配当前目录(不含子目录)
for /D %%i in (D:\*) do echo %%i  显示D盘根目录下的所有目录(不含子目录)
   
指定路径匹配文件:(含子目录) 结果类似 F:\sys1903\log.txt
for /R [[d:]path] %i in (set) do 命令 [参数] 以[d:]path为根目录及子目录;无d:则为当前目录;(.)目录树
for /r F:\ %%i in (*.txt) do echo %%i 查找F:盘下所有xx.txt文件(含子目录)
   
循环数值序列:  
for /L %i in (start,step,end) do 命令 [参数] 产生[start,end]增量为step
for /l %%i in (1,1,3) do @echo %%i 输出1 2 3
for /l %%i in (3,-1,1) do @echo %%i 输出3 2 1
set str=Tom,Bob;Jim  
For %i in (1 2,%str%) do @echo %i 输出1 2 Tom Bob Jim 
   
文件处理: 分析文件,str内容或命令输出结果,通过设置option获取结果
for /F ["options"] %i in (file-set) do 命令 [参数] 或"file-set"如有usebackq选项 (可指定含空格的文件名)
for /F ["options"] %i in ("str") do 命令 [参数] 或'str'
for /F ["options"] %i in ("命令") do 命令 [参数] 或`命令`
参数:  
eol=;(仅仅1个字符) 忽略分号开头的行
skip=n 文件开始时忽略行数
delims=xxx  (默认空格定界符号) 指分隔符集。这个替换了空格和制表符的
tokens=x,y,m-n* 每行变量提前 tokens=2,3* 每行:%i,%j,%k=第2字符,第3字符,剩余字符
   
FOR /F  %%i in (temp1111.txt) do @echo %%i 获得空白分割第一个str
FOR /F "eol=# skip=2 tokens=1,2*" %%i in (temp.txt) do @echo %%i %%j %%k  跳过2行
 
FOR /F "eol=# tokens=1,2* delims=,- " %%i in (temp.txt) do @echo %%i %%j %%k  忽略以#开头的行
FOR /F "tokens=1,2,3,4* delims=," %%i in ("aa bb,cc dd ee") do echo %%i %%j %%k %%l  结果显示aa bb cc dd ee
FOR /F "tokens=1* delims==" %%i IN ('set') DO @echo [%%i----%%j]
 
FOR /F "usebackq eol=; tokens=1,2* delims=,- " %%i in ("d:\test.txt") do echo %%i %%j %%k
FOR /f "usebackq tokens=1,2,3* delims=-, " %%i in ('aa bb,cc-dd ee') do echo %%i %%j %%k %%l
FOR /F "usebackq tokens=1* delims==" %%i IN (`set`) DO @echo [%%i----%%j]枚举环境变量名称和值
选项语法:  
%~I   FOR /F "delims=" %%i IN (temp1.txt) DO echo %%~i 删除引号(不能删除中间和后面的单")
%~fI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~fi 文件名(dir /b)前添加完整路径 类似C:\Program Files\Notepad++\a.txt
%~dI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~di 如变量%%i是文件或目录名返回文件或者目录所在盘符 类似C:
%~pI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~pi 仅获取变量的路径 类似\Program Files\Notepad++\
%~nI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~ni 仅获取变量的文件名 类似a.txt
%~xI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~xi 仅获取变量的扩展名 类似.txt
%~sI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~si 扩展的路径只含有短名 类似C:\Program Files\Notepad++\a.txt
%~aI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~ai 将 %I 扩展到文件的文件属性 类似d----或--a---
%~tI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~ti 将 %I 扩展到文件创建日期/时间 类似2020/01/12 21:43
%~zI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~zi 将 %I 扩展到文件的大小 类似4096
%~$PATH:I   查找在路径环境变量目录的首个名称或""
 FOR /F "delims=" %%i IN ("notepad.exe") DO echo %%~$PATH:i 结果C:\Windows\System32\notepad.exe在PATH变量指定路径里搜索notepad.exe,
  如果有notepad.exe则会把他所在绝对路径打印出来,没有就打印一个错误
组合修饰符获得多重结果:  
      set s='dir C:\WINDOWS\system32\notepad.exe /b'  
%~dpI FOR /F %%i IN (%s%) do echo %%~dpi 仅将 %I 扩展到一个驱动器号和路径 C:\Program Files\Notepad++\
%~nxI FOR /F %%i IN (%s%) do echo %%~nxi 仅将 %I 扩展到一个文件名和扩展名 notepad.exe
%~fsI FOR /F %%i IN (%s%) do echo %%~fsi 扩展到一个带有短名的完整路径名 C:\Program Files\Notepad++\notepad.exe
%~dp$PATH:I FOR /F %%i IN (%s%) do echo %%~dp$PATH:i 搜索列在路径环境变量的目录,找到首驱动器号和路径。C:\Windows\System32\
%~ftzaI FOR /F %%i IN (%s%) do echo %%~ftzai 类似DIR 结果为C:\Program Files\Notepad++\notepad.exe

转载地址:https://chunyou.blog.csdn.net/article/details/104333104 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:获取电脑盘符 tcy
下一篇:MySQL"Using a password on the command line interface..."(tcy)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月17日 12时30分18秒