Dos批处理命令一览表

命令类型命令功能参数说明
网络命令ping测试IP连接  
ipconfig查看IP配置  
arp解析地址  
start开启命令  
shutdowm关闭或重启计算机  
taskkill关闭指定进程  
延迟环境变量扩展命令setloacl enabledelayedexpansion延迟环境变量扩展 set/a a=1,b1=10
Setlocal EnableDelayedExpansion
echo:!b%a%! …
显示语句echo显示信息 1、输出提示信息echo hello,world
@2、关闭该命令的回显:@ echo 信息
@3、打开回显或关闭回显功能@echo off ;@echo on
.,:;"/]+\ 输出空行4、输出空行,即相当于输入一个回车echo./echo,/echo:/echo;/echo"/echo//echo]/echo+/echo\/
| 答复命令中的提问5、答复命令中的提问echo Y|rd /s c:\abc
>6、建立新文件或增加文件内容echo 123>myfile.txt;echo. >myfile.txt 
注释语句rem注释 注释后会回显。例rem 上面的echo 语句用于显示提示。
:: 执行时不会回显。例::上面的echo 语句用于显示提示。
 pause暂停 Echo 其他提示语 & pause > nul
目录语句cd目录切换.\..同分区切换
1、cd C:\WINDOWS
2、切换到当前目录 cd.
3、返回根目录cd\
4、返回上一级目录 cd..
/d不同分区切换
cd /d d:\123\abc
D:
显示当前的完整路径%cd%echo 当前路径是 %cd%
文件语句dir列文件名 /S 显示指定目录和所有子目录中的文件。 dir /s c:\windows
 /A  显示具有指定属性的文件
D    目录
R   只读文件                   
H    隐藏文件  dir /ah c:\
A    准备存档的文件                    
S    系统文件
 -     表示“否”的前缀 
例:dir /ad-h c:\
列出C:\下所有的文件夹,但不包含隐含的文件夹。
/p分页显示dir /p c:\
/b,只列出文件名称,不带有日期,时间,创建者等信息dir /b c:\
/o
N    按名称(字母顺序)          S    按大小(从小到大)
E    按扩展名(字母顺序)      D    按日期/时间(从先到后)
 G    组目录优先                      -    颠倒顺序的前缀 
 1、按照文件名的字母顺序排列
dir /on c:\
2、优先列出文件夹,并且文件夹和文件都按字母顺序排列。
 dir /ogn c:\
 
属性命令attrib显示或更改文件属性 -       清除属性。
  R      只读文件属性。
  A      存档文件属性。
  S      系统文件属性。
  H      隐藏文件属性。
  [drive:][path][filename]   指定要处理的文件属性。
  /S     处理当前文件夹及其子文件夹中的匹配文件。
  /D    也处理文件夹。
attrib d:\ pagefile.sys
attrib –h d:\ pagefile.sys清除“隐藏”属性
attrib s h d:\ pagefile.sys设置“系统”和“隐藏”属性
 attrib h d:\123\*.bat /s 批量将d:\123及其子目录下的所有bat文件设置为“隐藏”属性
attrib h d:\123 /s /d;(d 必需和/s一起使用)
删除命令del删除一个或数个文件 /P 删除每一个文件之前提示确认       
del /p d:\123\*.*删除每一个文件之前提示确认
/F   强制删除只读文件 
 /S   从所有子目录删除指定文件。     
del /s d:\123\*.* 删除d:\123目录及其子目录下所有文件
 /Q   安静模式。删除全局通配符时,不要求确认         del /s /q d:\123\*.* 删除d:\123目录及其子目录下所有文件,不要求确认
  /A  
R  只读文件
S  系统文件
H  隐藏文件
A  存档文件
-  表示“否”的前缀 
根据属性选择要删除的文件。
 del /ar /s d:\123\*.* 删除d:\123目录及其子目录下所有只读属性的文件
复制命令copy复制文件,不能复制文件夹文件名 目录名copy c:\123.txt d:\
把123.txt复制到d:\目录下。


 
文件名 文件名copy c:\123.txt d:\abc.bat
把123.txt复制到d:\目录下,并把它修改为abc.bat
目录名 目录名copy c:\123 d:\abc
将c:\123 目录中所有文件复制到d:\abc目录中
. copy .\123把当前目录下的123子目录中的文件全部拷到当前目录
/y无需确认copy c:\123\*.rm d:\abc /y 重名文件无须确认直接覆盖
合并文件/b合并文件

例如:把两个文件复制到第三个文件中,路径中有空行,用双引号

copy /b "!lastfilename!"+"!thisfilename!" testfilename.html


copy /b d:\1.txt+d:\2.mp3
把2.mp3合并进了1.txt,缺省情况下,合并后的文件名是命令中的第一个文件
xcopy复制文件和目录树,默认情况下,不复制隐藏或系统文件/S 复制非空的目录和子目录xcopy /s d:\123 e:\kkk\
复制d:\123目录下所有文件(夹)到e:\kkk,不包括空的子目录
/E 复制所有子目录,包括空目录。同时使用 /e、/s 和 /t 命令行选项。xcopy /e d:\123 e:\kkk\
复制d:\123目录下所有文件(夹)到e:\kkk,包括空的子目录
/H 复制具有隐藏和系统文件属性的文件。默认情况下xcopy 不复制隐藏或系统文件。 xcopy /e /h d:\123 e:\kkk\
复制d:\123目录下所有文件(夹)到e:\kkk,包括空的子目录、隐藏或系统的文件
/T 只复制子目录结构(即目录树),不复制文件。要复制空目录,必须包含 /e 选项。 
/Y 禁止提示您确认要覆盖现存的目标文件。通过参数/y,可以实现重名文件无须确认直接覆盖。 
文件夹命令md创建文件夹有空格要用双引号md d:\abc
在D盘下建立一个名为abc的文件夹
md "d:\my game"

 
同时创建多个目录md abc D:\gmae\123 abcd
在当前目录下建立abc和abcd两个文件,同时D:\gmae下也建立一个文件夹123
创建多级目录 md d:\abc\abcd\abcde
在D盘下建立文件夹abc,在abc中建新文件夹abcd,接着再在abcd中建文件夹abcde
rd删除文件夹 rd d:\123 
rd abc  删除当前目录下的空文件夹
  /S      除目录本身外,还将删除指定目录下的所有子目录和
            文件
rd /s d:\123 
  /Q      安静模式,带 /S 删除目录树时不要求确认rd /s /q d:\123
重命名ren重命名文件(夹):文件名  文件名ren d:\123.txt 456.bat
批量命名ren *.bat *.txt
把后缀名为bat的文件批量更改为txt后缀后的文件
移动命令move移动(重名名)文件(夹):不可以跨分区移动文件夹文件夹A  文件夹Bmove d:\abc d:\abcd
如果目标文件夹abcd不存在,则把abc移到d:\下,并把自身名称更改为abcd。
 ①如果B存在,则把A移动到B目录下。
 ②如果B不存在,则把A移动到B所在的目录下,同时A被重命名为B。
文件名A  文件夹Bmove 123.txt e:\abc
① 将把A移动到B目录下。
② 如果B文件夹内有和A文件同名的:
A和B为同一分区,则提示:是否覆盖/不覆盖/全部覆盖?
 A和B为不同分区,则提示:文件存在。不做任何操作! 
文件名A  文件名Bmove d:\123.txt d:\abc\456.txt
如果456.txt不存在,则把123.txt移到d:\abc目录下,并重命名为456.txt
①A和B为同一分区,如果B存在,则系统会提示你是否将把A重命名为B;如果B不存在就把A移动到B所在的目录下的同时,重命名为B。
 ②A和B为不同分区,如果B存在,则命令不执行;如果B不存在,则把A移动到B所在的目录下并重命名为B。
 /Y     取消确认改写一个现有目标文件的提示move /y 123.txt 456.txt
如果123.txt和456.txt都存在,通过/y参数后,系统不会提示你,而直接把123.txt覆盖456.txt
 /-Y     对确认改写一个现有目标文件发出提示。 
查找命令find字符串查找字符串A 文件B find "abc" d:\abc.txt
/V    显示所有未包含指定字符串的行find /v "abc" d:\abc.txt
查找不包含"abc"字符串的行
/C  仅显示包含字符串的行数。 find /c "abc" d:\abc.txt
统计包含"abc"字符串的行数
/N   显示行号 find /n "abc" d:\abc.txt
字符串"abc"所在的行号
/I    搜索字符串时忽略大小写 find /i "abc" d:\abc.txt
/OFF[LINE] 不要跳过具有脱机属性集的文件 
findstr字符串查找增强 findstr "icq" 123.txt
在123.txt中查找包含有“icq”这三个字符串的行
/R 强调以正则表达式规则来解读字符串
  .   通配符: 任何字符
  *   重复: 以前字符或类别出现零或零以上次数
  ^    行的开始
  $      行的终点
  [class]     字符类别: 任何在字符集中的字符
  [^class]    补字符类别: 任何不在字符集中的字符
  [x-y]     范围: 在指定范围内的任何字符
  \x    Escape: 元字符 x 的文字用法
  \<xyz    字位置: 字的开始
  xyz\>   字位置: 字的结束
findstr /r "icq msn" 123.txt
在123.txt中查找包含有 “icq”或“msn”的行,查找的多个字符串间用空格隔开
findstr "\<echo" 123.txt
匹配所有含有以echo为前缀的字符串的行
findstr "echo\>" 123.txt
匹配所有含有以echo为后缀的字符串的行
findstr "1\\" 123.txt 或findstr "1\\\\" 123.txt
在文件123.txt中查找可以匹配“1\”字符串的行
/S  在当前目录和所有子目录中搜索 匹配文件。findstr /s /i "MSN" *.txt
在当前目录和所有子目录中的txt文件中搜索字符串"MSN"(不区分字母大小写)。
  /I   指定搜索不分大小写。 
/C:string 使用指定字符串作为文字搜索字符串。 findstr /c:"icq msn" 123.txt
在123.txt中查找包含有 “icq msn”这个字符串的行。这里“icq msn”是一整体。
/B 在一行的开始配对模式。 
/E   在一行的结尾配对模式。 
/G:file   从指定的文件获得搜索字符串。 (/ 代表控制台)。 
设置变量命令set设置变量的值%var%引用变量

SET 命令不允许变量名含有等号。

set var =abcd
echo %var%
set variable= //清除变量的值

set /p 用户自己输入变量的值set /p var=请输入变量的值: 
字符串替换:%PATH:str1=str2%set var=%a: =%把字符串a中的空格替换为空字符
字符串截取:%a:~[m[,n]]%set var=%a:~1,-3% 把变量a 第2位起到倒数第3位前的值赋予var
进行简单计算set /a expression
  ( )              分组
  !  ~  -        一元运算符
  *  /  %       算数运算符
    -               算数运算符
  <<   >>    二进制逻辑移位
  &               二进制按位“与”
  ^               二进制按位“异”
  |                 二进制按位“或”
  =   * =   / =   % =   =  -=           算数赋值
  &=   ^=   |=   <<=    >>=        二进制运算赋值
  ,                 表达式分隔符
set /a var=10/3
set /a var+ =1对应原始语法就是set /a var = %var%+1
set /a var*=2对应原始语法就是set /a var= %var%*2
set /a var= 1 " ^ "< 1       异运算
set /a var= 1  "%"<  1     取模运算
set /a var= 3<  "<<" 2    左移位运算,  3 的二进制为11,左移2 位为 1100,换成十进制就是12,自行验证
set /a var= 4 <  ">>" 2    右移位运算,4 的二进制为100,右移动2 位为 1,结果为1
   
循环命令forfor/f查询文件

1、for /f %%i in (文件名) do (……)
2、for /f %%i in ('命令语句') do (……)
3、for /f %%i in ("字符串") do (……)

~I    删除任何引号("),扩展 %I
  
 %~fI    将 %I 扩展到一个完全合格的路径名
  
 %~dI    仅将 %I 扩展到一个驱动器号
  
 %~pI    仅将 %I 扩展到一个路径  
 %~nI    仅将 %I 扩展到一个文件名  
 %~xI -   仅将 %I 扩展到一个文件扩展名
  
 %~sI    扩展的路径只含有短名  
 %~aI
  将 %I 扩展到文件的文件属性  
 %~tI    将 %I 扩展到文件的日期/时间  
 %~zI    将 %I 扩展到文件的大小  
 %~$PATH:I    查找列在路径环境变量的目录,并将 %I 扩展到找到的第一个完全合格的名称。

如果环境变量名未被定义,或者没有找到文件,此组合键会扩展到空字符串

%~dpI       - 仅将 %I 扩展到一个驱动器号和路径
     %~nxI       - 仅将 %I 扩展到一个文件名和扩展名
     %~fsI       - 仅将 %I 扩展到一个带有短名的完整路径名
     %~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展
                   到找到的第一个驱动器号和路径。
     %~ftzaI     - 将 %I 扩展到类似输出线路的 DIR


 
 

for /f %%i in (test.txt) do echo %%i;
显示test.txt中的内容
for /f %%i in ('dir /a-d /b *test*.txt') do echo %%i ;
显示当前目录下文件名中含有test字符串的文本文件
for /f "delims=. tokens= 1-3" %%i in ("bbs.bathome.cn") do echo %%i-%%j-%%k
把bbs.bathome.cn这串字符中的点号换为短横线
delims=" 切分字符串,默认以空格键或跳格键作为字符串的切分字符for /f "delims=," %%i in (test.txt) do echo %%i
提取每行第一个逗号之前的所有内容
for /f "delims=.," %%i in (test.txt) do echo %%i
提取第一个点号或第一个逗号之前的内容
tokens= 定点提取2.for /f  "tokens=* delims=" %%i in ("Hello world.") do (  )
没有分割符,所有的节,把字符串“Hello world.”赋值给%%i

  for /f "delims=, tokens=2,5" %%i in (test.txt) do echo %%i %%j
提取以逗号切分的第2节和第5节字符串
skip=n跳过无关内容,直奔主题for /f "skip=2" %%i in (test.txt) do echo %%i
跳过头两行内容,从第3行起显示test.txt中的信息
eol=忽略以指定字符打头的行,只能指定1个,默认忽略以分号打头的行内容for /f "eol=;" %%i in (test.txt) do echo %%i
忽略以分号打头的那些行
for /f "eol="
强制指定字符为空,取消默认设置
usebackq 增强型参数。
如果文件名有空格或& 时使用该参数, 
4、for /f "usebackq" %%i in ("文件名") do (……)
5、for /f "usebackq" %%i in (`命令语句`) do (……)
 6、for /f "usebackq" %%i in ('字符串') do (……) 
for /f "usebackq" %%i in ("test 1.txt") do echo %%i 
for /d查询目录不搜索文件、子目录for /d %%i in (???) do echo %%i
执行后会把C盘根目录下的1-3个字母的文件目录名字打印出来,而文件则不显示
for /d %%i in ("C:\Program Files\*") do echo %%i
有空格用双引号
for /r遍历搜索递归操作,对其目录及其子目录的所有文件进行操作,不会遍历隐藏文件
1、for /r %%i in (含通配符的文件名") do (……)
2、for /r %%i in (文件名) do (……)
3、for /r %%i in ('字符串') do (……) 
for /r c:\ %%i in (boot.ini) do echo %%i
for /r c:\ %%i in (*.exe) do echo %%i
 列出C 盘根目录,和每个目录的子目录下面全部的EXE 文件
for /r c:\ %%i in (boot.ini) do echo %%i
不管boot.ini是否存在而将枚举c 盘所有目录
for /r c:\ %%i in (boot.ini) do if exist %%i echo %%i
只列举 boot.ini存在的目录
for /l 建立序列 for /l %%i in (1,1,5) do echo %%i
打印从 1 2 3 4 5这样5 个数字,而且每个数字占一行
判断命令if判断判断两个字符串是否相等,if "字符串1"=="字符串2" command 语句; 
判断两个数值是否相等,if 数值1 equ 数值2 command 语句;
等于                   equ             equal
大于                   gtr              greater than
大于或等于      geq             greater than or equal
小于                   lss              less than
小于或等于       leq              less than or equal
不等于               neq             no equal 
if %var% geq 10 (echo 此数大于或等于10) else echo 此数小于10
判断判断驱动器,文件或文件夹是否存在,if exist filename command 语句;if exist "e:" (echo e盘存在) else echo e盘不存在
if exist test\. (echo test 是文件夹) else echo test 是文件 判断是否是文件夹
判断变量是否已经定义,if defined 变量 command 语句;if defined a (echo 变量 a 已定义) else (echo 变量 a 没有被定义)
判断上个命令的返回值,if errorlevel 数值 command 语句。当使用  if errorlevel 0 cmmand 句式时,它的含义是:如果返回的错误码值大于或等于0 的时候,将执行command操作;errorlevel 返回值可以在0~255 之间。
当使用  if %errorlevel%==0 cmmand 句式时,它含义是:如果返回的错误码值等于0 的时候,将执行command操作。 
if /i 不区分大小写if /i "a"=="A" (echo 相同) else echo 不相同
1。if not "字符串1"=="字符串2" command 语句;
2。if not数值1 equ 数值2 command 语句;
3。If not exist filename command 语句;
4。if not defined 变量 command 语句;
5。if not errorlevel 数值 command 语句。
if not exist "c:\" (echo  C盘存在) else echo  C盘不存在
特殊符号特殊符号重定向符>,<,>>,>&,<& >将命令输出写入到文件或设备 (如打印机),而不是命令提示符窗口或句柄 echo hello120 >1.txt 
 >>将命令输出添加到文件末尾 而不删除文件中已有的信息。 echo hello120 >>1.txt
 <  从文件而不是从键盘或句柄读入命令输入。
  >& 将一个句柄的输出写入到另一个句柄 的输入中。
  <& 从一个句柄 读取输入并将其写入到另一个句柄输出中。
句柄   句柄的数字代号   描述
  STDIN  0  键盘输入
 STDOUT  1  输出到命令提示符窗口
 STDERR  2  错误输出到命令提示符窗口
 UNDEFINED  3-9  句柄由应用程序单独定义,它们是各个工具特有的 
findfile file.txt>search.txt 2<&1
查找 File.txt,然后将句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到 Search.txt
  | 管道符 从一个命令中读取输出并将其写入另一个命令的输入中 echo Y| rd /s c:\abc 
组合符 &,&&,|| & 符号无论命令是否正确执行,都依次执行各条命令  dir z:\ & dir y:\ & dir c:\ 
 && 符号前一条命令执行正确后再执行下一条命令 
 || 前面的命令执行失败时才执行该符号后的命令  tasklist | find /i "qq.exe" && taskkill /f /im qq.exe || echo 你开了QQ?我不信   
 ^转义字符   转义字符echo ^>、echo ^|、echo ^|^|、echo ^^…… 
 % 变量引导符 1、% 变量引用处理
2、形式参数的引用如%0、%1、%2...9%。%*  一次返回全部参数的值
3、出现在 set /a 语句中时,表示两数相除取余数,在批处理文件中,需要连续两个百分号,写成%%
4、转义符号:如果要显示%本身时,需要在前面用%来转义. 
   :%var%、%str% 
 
  "" 界定符 
①在表示带有空格或特殊符号的路径时常要用""来将路径括起来。
②表示其中的内容是一个完整的字符串。
cd /d cd "d:\program files\^%*abc" 
:标号任何以冒号:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容 
有效标号:冒号后紧跟一个以字母数字开头的字符串,goto语句可以识别 
无效标号:冒号后紧跟一个非字母数字的一个特殊符号,goto无法识别的标号,可以起到注释作用,所以 :: 常被用作注释符号,其实 :+ 也可起注释作用。 
, 逗号逗号相当于空格dir,c:\
() 括号括号中可以包括多行命令,这些命令将被看成一个整体,视为一条命令行(
echo 1
echo 2
echo 3
)
! 感叹号在变量延迟问题中,用来表示变量,即%var%应该表示为!var! 
; 分号命令相同时,可以将不同目标用分号来隔离dir c:\;d:\;e:\;z:\
 系统变量 %ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。 
 %APPDATA% 本地 返回默认情况下应用程序存储数据的位置。 
 %CD% 本地 返回当前目录字符串。 
 %CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。 
 %CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。 
 %COMPUTERNAME% 系统 返回计算机的名称。 
 %COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。 
 %DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。 
 %ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。 
 %HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 
 %HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 
 %HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 
 %LOGONSERVER% 本地 返回验证当前登录会话的域控制器的名称。 
 %NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。 
 %OS% 系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。 
 %PATH% 系统 指定可执行文件的搜索路径。 
 %PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。 
 %PROCESSOR_ARCHITECTURE%  系统 返回处理器的芯片体系结构。值:x86 或 IA64 基于Itanium 
 %PROCESSOR_IDENTFIER% 系统 返回处理器说明。 
 %PROCESSOR_LEVEL%  系统 返回计算机上安装的处理器的型号。 
 %PROCESSOR_REVISION% 系统 返回处理器的版本号。 
 %PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。 
 %RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。 
 %SYSTEMDRIVE% 系统 返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。 
 %SYSTEMROOT% 系统 返回 Windows server operating system 根目录的位置。 
 %TEMP% 和 %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。 
 %TIME%  系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。 
 %USERDOMAIN% 本地 返回包含用户帐户的域的名称。 
 %USERNAME% 本地 返回当前登录的用户的名称。 
 %USERPROFILE% 本地 返回当前用户的配置文件的位置。 
 %WINDIR% 系统 返回操作系统目录的位置。echo %WINDIR%能显示一个变量的值 
 %0指批处理文件名(包括路径)。(1)返回批处理所在绝对路径;(2)无限循环执行BAT  
  %1 %2 %3 %4 %5 ......%9 批处理指令的形参