当前位置:首页 > 最最最全的DOS命令大全
写在前:此文适合有一定dos命令基础的人看。文件资料主要来自互联网和个人整理。文件只适用学习交流,非法操作,责任自负。如有错误之处,大家多批评指正。邮箱:heou0709@126.com 第一章:批处理基础之命令篇
1.注释命令:
rem 加注释用,该命令后的同一行内容不被执行,但在echo on状态下能回显。
符号::也起到注释作用,其功能和程序语言中的注释相同,永不回显,只是给批处理员在TXT格式下看的帮助内容 用::有需注意,任何以冒号:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容。(有效标号:冒号后紧跟一个以数字开头的字符串,goto语句可以识别;无效标号:冒号后紧跟一个非数字的一个特殊符号,goto语句无法识别) 行内注释:%注释内容%(不常用,慎用) 2.Echo和@命令:
>>echo 单独写表示显示echo设置状态
>>echo +信息内容 ,此法常用来提示用户操作
>>echo on 显示后面命令的回显,echo off 关闭后面命令的回显,注意的是,在使用此命令时,后面的命令要换一行 不然就会当作“信息内容”处理 当然此法只是可以用来操作echo on/off后面的命令,如果要关闭echo on/off命令本身,则需要在echo on/off命令前加@ 操作。即:@ echo off 换行写命令
>>在DOS提示符下输入echo off ,将关闭DOS提示符的显示,使屏幕只留下光标,直到键入echo off,提示符才会重新出现。
>>echo。注意的echo后面紧跟(不能有空格)英文状态下的点号,且点号可以用“,:”等任一符号来替代。举例:echo.|time 相当于在time命令后给出一个回车,即在执行时系统会在显示当前时间后,换行,再自动返回到DOS提示状态。
>>echo 答复语|命令文件名 此法可以用于简化一些需要人机对话的命令,它是通过DOS管道命令把echo命令输入的预置答复作为人机对话命令的输入。举例:echo Y|del d:\\1.txt 此命令相当于在出现人机对话时输入“Y”回车。故命令执行后会直接将D盘下的1.txt文件删除(不会放入回收站,慎用del)
>>echo 文件内容>文件名 此法用来新建一个批处理文件 举例:echo dir>d:\\new.bat执行此命令后会在D盘根目录下新建一个名为new.bat的批处理文件,且在该文件中的内容为“dir” >>echo 文件内容>>文件名 此法用来向自动批处理文件中追加内容 多和“echo 文件内容>文件名”联合使用 举例:echo time>>d:\\new.bat (假如在此命令前有“echo dir>d:\\new.bat”)则此命令执行后会在如在D盘下名为new.bat文件的内容中追加“time” 如果没有假如的命令,则会在D盘下直接生成一个名为new.bat的文件且内容只有“time” 3.Pasuse :暂停 单独使用将会显示“按任意键继续”信息。也可以这样:echo 提示信息 & pause >nul 则会显示“提示信息”。不会出现“按任意键继续” “puse>nul”可以理解为空提示,因为默认的pause会显示“按任意键继续”
4.errorlevel:常用来判断刚才的命令是否执行成功 格式:echo %errorlevel% 举例:dir 换行写 echo %errorlevel% 则会显示完目录后,在后面跟一个“0”表示执行成功,如果执行出错会高errorlevel为“1”。 思考在举例的命令下不写“echo”,会怎样。 5.title:用来设置批处理执行时DOS窗口显示的标题 格式:title 标题
6.color:用来设置DOS窗口的背景和前景颜色。格式:color 背景色值 前景色值 对于具体的颜色值如下:0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 。。。 D=淡紫色 E=淡黄色 F=亮白色 举例:coror 4E 执行后将会在红色背景上产生淡黄色字 如果只写一个数字则会默认的写的是前景色且背景色是默认的黑色 注意:如果执行“color”(只有此命令,后不跟数值)或者“color EE” 设置相同的颜色,用“errorlevel”判断时则会返回“1”,且颜色为cmd启动时的颜色,一般为“背景黑前景白”
7.Mode:用来配置系统设备.具体可以参数可以在CMD下输入"MODE/?"来查看,也可以直接在CMD下输入"MODE"参看本机配置 举例:mode con cols=113 lines=15此命令设置DOS窗口大小:15行,113列
8.Goto和标号:标号的名字可以随便起,但是最好是有意义的字符串啦,前加个冒号用来表示这个字符串是标号,goto命令就是根据这个冒号(:)来寻找下一步跳到到那里 9.Find:FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] \/V 显示所有未包含指定字符串的行。 /C仅显示包含字符串的行数。 /N显示行号。 /I 搜索字符串时忽略大小写。 /OFF[LINE] 不要跳过具有脱机属性集的文件 \ 指定要搜索的文字串 [drive:][path]filename 指定要搜索的文件。 Find常和type命令结合使用
Type [drive:][path]filename | find \ #挑选包含string的行
Type [drive:][path]filename | find /v \ #剔除文件中包含string的行 Type [drive:][path]filename | find /c #显示文件行数 和“type”的这种类似连用将去除“find”自带的提示语 举例:@echo off echo 111 >test.txt echo 222 >>test.txt find \del test.txt
pause 分析:执行后将显示带有“find”的提示语。如果把“find “111” test.txt”换成“type test.txt|find \” 将去掉find自带的提示语
10.start 命令:批处理中调用外部程序的命令(该外部程序在新窗口中运行,批处理程序继续往下执行,不理会外部程序的运行状况),但如果不通过start命令而直接运行外部程序则必须等外部程序完成后才能继续执行批处理剩下的命令。 举例:STATRT EXPLORER D:\\ 执行后会在新的窗口打开D盘,而且不管D盘是否立即打开,都会直接执行后面的命令。 11.assoc和ftype:
assoc 设置'文件扩展名'关联,关联到'文件类型'
ftype 设置'文件类型'关联,关联到'执行程序和参数' 当你双击一个.txt文件时,并不是根据.txt直接判断用 notepad.exe 打开,而是先判断.txt属于 txtfile ‘文件类型’再调用 txtfile 关联的命令行txtfile=%SystemRoot%\\system32\\NOTEPAD.EXE %1 可以在\文件夹选项\\里修改这2种关联 assoc #显示所有'文件扩展名'关联
assoc .txt #显示.txt代表的'文件类型',结果显示 .txt=txtfile assoc .exe #显示.exe代表的'文件类型',结果显示 .exe=exefile ftype #显示所有'文件类型'关联
ftype exefile #显示exefile类型关联的命令行,结果显示 exefile=\12.PUSHID和POPD:切换当前目录,一般很少用(dos编程中很有用)
举例:@echo off
c: & cd\\ & md mp3 #在 C:\\ 建立 mp3 文件夹 md d:\\mp4 #在 D:\\ 建立 mp4 文件夹 cd /d d:\\mp4 #更改当前目录为 d:\\mp4
pushd c:\\mp3 #保存当前目录,并切换当前目录为 c:\\mp3 popd #恢复当前目录为刚才保存的 d:\\mp4
13.Call:>>可以调用一条批处理命令(和直接执行命令效果一样,主要用于变量多级嵌套) 命令嵌套:首先用一条DOS命令生成一个字符串,而这个字符串是另一条DOS命令,用call语句调用字符串将其运行,从而得到最终结果。现举一个变量嵌套的例子。 举例:@echo off
set str1=aaa echo ok bbb echo 初始字符串:%str1% echo 生成命令字符串如下:
echo %str1:~4,7%
echo 运行命令字符串生成最终结果为:
call %str1:~4,7%
pause 注意 call调用和无call调用。
>>可以调用一个本文件内的命令段,相当于子程序(命令段以标签:label开头,以命令“goto:eof”结尾)>>调用其它批处理程序 注:参数可以参FOR命令 举例:set aa=123456
set cmdstr=echo a% call %cmdstr%
pause 分析:call调用“%cmdstr%”,显示123456
14.SHIFT:更改批处理中可替换参数的位置。格式:SHIFT/n 如果命令的扩展名被启用,SHIFT命令支持/n命令行开关,此命令行用来告诉命令从第n个参数开始转移,n介于零和八之间 举例:SHIFT/2 意为,从第二个参数开始移位,第0个和第一个参数无影响。即第三个参数移位到第二个参数(%3?2%),第四个参数移位到第三个参数(%4?2%),第n+1个参数移位到第n个参数(%n+1?n%) 15.IF:有三种基本格式,简要分析如下:
>>IF [NOT] ERRORLEVEL NUMBER COMMAND 对于此种格式理解,因为此种格式是通过ERRORLEVEL来判断命令的返回值,所以这个句子必须放在某一个命令后面。 NUMBER的数字取值范围0~255,此格式一般会多个一起连用来判断多种情况,并且要非常注意在写这种格式时,要把NUMBER大的排列在前,因为判断的条件是ERRORLEVEL返回值大于等于NUMBER的值时,则认为条件成立,改为执行COMMAND 举例: @echo off
dir
IF ERRORLEVEL 1 goto 1 &rem这句一定要写在后“IF ERRORLEVEL 0 goto 0”前 IF ERRORLEVEL 0 goto 0
:0 &rem此处以及后的:应为英文件状态下的,这里写成中文 echo 命令执行成功 &rem 的只是方便看 goto exit :1
echo 命令执行失败
goto exit :exit
Echo “按任意键退出” & pause>nul
>>IF [NOT] STRING1=STRING2 COMMAND 说明:字符串1和字符串2必须是绝对相等,才判条件成立,并执行COMMAND 附注:此格式下的字符串也可以是相关参数的判断比较
>>IF [NOT] EXIST FILENAME COMMAND 说明:EXIT FILENAME为文件或者目录存在的意思
16.Setlocal与变量延迟:执行结果是4而不是5?首先是简要说下批处理机制:批处理是按行读取的(for命令等的圆括号闭合的所有语句也当作一行),在批处理前要完成必要的预处理工作,这其中包括对该行命令的变量赋值。可以通过例一理解。
例一:@echo off set a=4
执行结果是4而不是5 因为在批处理执行到 set a=5 & echo %a%之前,先把这一句整句读取并做了预处
set a=5 & echo %a% 理,这里即是对变量a赋值。简单的来说,在读取一条 pause 完整语句之后,不立即对该行的变量赋值,而会在某个单 语句执行之前再进行赋值,也就是“延迟”
例二:只需在例一的“set a=4”之前加一句“setlocal enabledelayexpansion” 并把最后变量a的输出改为“!a!”则可以使执行结果变为“5”。 分析:由于启动了变量延迟,所以批处理能够感知到动态变化,即不是先给该行变量赋值,而是在运行过程中给变量赋值,因此此时a的值就是5了 注意:如果“set a=5 & echo %a%”分成两行写则不会出现变量的延迟(仍是通过批处理机制理解)。 例3: @echo off
setlocal enabledelayedexpansion for /l %%i in (1,1,5) do ( set a=%%i echo !a! ) pause 结果: 1 2 3 4
5
分析:本例开启了变量延迟并用“!!”将变量扩起来,因此得到我们预期的结果。如果不用变量延迟会出现什
么结果呢?结果是这样的: ECHO 处于关闭状态。 ECHO 处于关闭状态。 ECHO 处于关闭状态。 ECHO 处于关闭状态。
共分享92篇相关文档