Windows 批处理

第一章 批处理基础第一节 常用批处理内部命令简介批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为 BAT 或者 CMD。这些命令统称批处理命令。 小知识:可以在键盘上按下 Ctrl+C 组合键来强行终止一个批处理的执行过程。了解了大概意思后,我们正式开始学习.先看一个简单的例子! @echo off echo "欢迎来到非常 BAT!" pause ?把上面的 3 条命令保存为文件 test.bat 或者 test.cmd 然后执行,他就会在屏幕上显示以下二行话: 欢迎来到非常 BAT! 请按任意键继续. . . 这就是一个简单批处理文件了,这个批处理文件一共就用了 2 条命令 "echo" 和"pause" 还有一个特殊符号"@"从上面这个简单的批处理中,我们可以发现其实批处理就是运用一些含有特殊意义的符号和一些完成指定功能的命令组合而成,那么在批处理中有多少这样的特殊符号和功能命令呢?我们现在就来仔细了解一下一些最常用的! 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) REM 和 :: ECHO 和 @ PAUSE ERRORLEVEL TITLE COLOR mode GOTO 和 : FIND START assoc 和 ftype pushd 和 popd CALL shift IF setlocal 与 变量延迟介绍命令 1、REM 和 :: REM 为注释命令,一般用来给程序加上注解,该命令后的内容不被执行,但能回显。其次, :: 也可以起到 rem 的注释作用, 而且更简洁有效; 但有两点需要注意: 第一, 任何以冒号:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容。有效标号:冒号后紧跟一个以字母数字开头的字符串,goto 语句可以识别。无效标号:冒号后紧跟一个非字母数字的一个特殊符号,goto 无法识别的标号,可以起到注释作用,所以 :: 常被用作注释符号,其实 :+ 也可起注释作用。 第二, 与 rem 不同的是, :: 后的字符行在执行时不会回显, 无论是否用 echo on 打开命令行回显状态, 因为命令解释器不认为他是一个有效的命令行, 就此点来看, rem 在某些场合下将比 :: 更为适用; 另外, rem 可以用于 config.sys 文件中。 2、ECHO 和 @ 打开回显或关闭回显功能,或显示消息。如果没有任何参数, echo 命令将显示当前回显设置。@字符放在命令前将关闭该命令回显,无论此时 echo 是否为打开状态。 语法: echo [{ on|off }] [message] echo. 此用法将显示一空行,相当于回车,非常有用。 执行 echo off 将关闭回显,它后面的所有命令都不显示命令本身,只显示执行后的结果,除非执行 echo on 命令。 执行@echo off 不但关闭以后命令的回显,连 echo off 命令本身也不显示了。 通常以@echo off 作为批处理程序的首行。 一般用 ECHO MESSAGE 来显示一个特定的消息。 例: @Echo off Echo hello Pause 运行显示:hello 3、PAUSE 停止系统命令的执行并显示下面的内容。 例: PAUSE 运行显示: 请按任意键继续. . . 要显示其他提示语,可以这样用: Echo 其他提示语 & pause > nul 4、errorlevel 程序返回码 echo %errorlevel% 每个命令运行结束,可以用这个命令行格式查看返回码判断刚才的命令是否执行成功。默认值为 0,一般命令执行出错会设 errorlevel 为 1。 5、title 设置 cmd 窗口的标题,例如: title 新标题 可以看到 cmd 窗口的标题栏变了。 6、COLOR 设置默认的控制台前景和背景颜色。语法为: COLOR [attr] attr 指定控制台输出的颜色属性。颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一: 0 = 黑色 1 = 蓝色 2 = 绿色 3 = 湖蓝色 4 = 红色 5 = 紫色 6 = 黄色 7 = 白色 8 = 灰色 9 = 淡蓝色 A = 淡绿色 B = 淡浅绿色 C = 淡红色 D = 淡紫色 E = 淡黄色 F = 亮白色 如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时的颜色。这个值来自当前控制台窗口、/T 开关或DefaultColor 注册表值。 如果用相同的前景和背景颜色来执行 COLOR 命令,COLOR 命令会将 ERRORLEVEL 设置为 1。例如: COLOR fc" 在亮白色上产生亮红色 7、mode 配置系统设备。 串行口: MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s] [to=on|off] [xon=on|off] [odsr=on|off] [octs=on|off] [dtr=on|off|hs] [rts=on|off|hs|tg] [idsr=on|off] 设备状态: MODE [device] [/STATUS] 打印重定向: MODE LPTn[:]=COMm[:] 选定代码页: MODE CON[:] CP SELECT=yyy 代码页状态: MODE CON[:] CP [/STATUS] 显示模式: MODE CON[:] [COLS=c] [LINES=n] 击键率: MODE CON[:] [RATE=r DELAY=d] 例: mode con cols=113 lines=15 & color 9f 此命令设置 DOS 窗口大小:15 行,113 列 8、GOTO 和 : 会点编程的朋友就会知道这GOTO是跳转的意思。在批处理中允许以“:XXX”来构建一个标号,然后用 GOTO XXX 跳转到标号:XXX 处,然后执行标号后的命令。 例: if {%1}=={} goto noparms if "%2"=="" goto noparms 标签的名字可以随便起,但是最好是有意义的字符串,前加个冒号用来表示这个字符串是标签,goto 命令就是根据这个冒号(:)来寻找下一步跳到到那里。 例: @echo off :start set /a var+=1 echo %var% if %var% leq 3 GOTO start pause 运行显示: 1 2 3 4 9、find 在文件中搜索字符串。 FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]] /V 显示所有未包含指定字符串的行。 /C 仅显示包含字符串的行数。 /N 显示行号。 /I 搜索字符串时忽略大小写。 /OFF[LINE] 不要跳过具有脱机属性集的文件。 "string" 指定要搜索的文字串, [drive:][path]filename 指定要搜索的文件。 如果没有指定路径,FIND 将搜索键入的或者由另一命令产生的文字。 Find 常和 type 命令结合使用 Type [drive:][path]filename | find "string" [>tmpfile] #挑选包含 string 的行 Type [drive:][path]filename | find /v "string" #剔除文件中包含 string 的行 Type [drive:][path]filename | find /c #显示文件行数 以上用法将去除 find 命令自带的提示语(文件名提示) 例: @echo off echo 111 >test.txt echo 222 >>test.txt find "111" test.txt del test.txt pause 运行显示如下: ---------- TEST.TXT 111 请按任意键继续. . . 例: @echo off echo 111 >test.txt echo 222 >>test.txt type test.txt|find "111" del test.txt pause 运行显示如下: 111 请按任意键继续. . . 10、start 命令批处理中调用外部程序的命令(该外部程序在新窗口中运行,批处理程序继续往下执行,不理会外部程序的运行状况),如果直接运行外部程序则必须等外部程序完成后才继续执行剩下的指令。 例:start explorer d:\ 调用图形界面打开 D 盘 11、assoc 和 ftype 文件关联 assoc 设置'文件扩展名'关联,关联到'文件类型' ftype 设置'文件类型'关联,关联到'执行程序和参数' 当你双击一个.txt 文件时,windows 并不是根据.txt 直接判断用 notepad.exe 打开。而是先判断.txt 属于 txtfile '文件类型',再调用 txtfile 关联的命令行 txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1。可以在"文件夹选项"→"文件类型"里修改这 2 种关联。 assoc #显示所有'文件扩展名'关联 assoc .txt #显示.txt 代表的'文件类型',结果显示 .txt=txtfile assoc .doc #显示.doc 代表的'文件类型',结果显示 .doc=Word.Document.8 assoc .exe #显示.exe 代表的'文件类型',结果显示 .exe=exefile ftype #显示所有'文件类型'关联 ftype exefile #显示 exefile 类型关联的命令行,结果显示 exefile="%1" %* assoc .txt=Word.Document.8 设置.txt 为 word 类型的文档,可以看到.txt 文件的图标都变了 assoc .txt=txtfile 恢复.txt 的正确关联 ftype exefile="%1" %* 恢复 exefile 的正确关联 如果该关联已经被破坏,可以运行command.com,再输入这条命令。 12、pushd 和 popd 切换当前目录 @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 一般用处不大,在当前目录名不确定时,会有点帮助。(dos 编程中很有用) 13、CALL 在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理。 CALL [drive:][path]filename [batch-parameters] 调用的其它批处理程序。filename 参数必须具有 .bat 或 .cmd 扩展名。 CALL :label arguments 调用本文件内命令段,相当于子程序。被调用的命令段以标签:label 开头,并且以命令 goto :eof 结尾。 另外,批脚本文本参数参照(%0、%1、等等)已如下改变: 批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...) 批参数(%n)的替代已被增强。您可以使用以下语法: %~1 - 删除引号("),扩充 %1 %~f1 - 将 %1 扩充到一个完全合格的路径名 %~d1 - 仅将 %1 扩充到一个驱动器号 %~p1 - 仅将 %1 扩充到一个路径 %~n1 - 仅将 %1 扩充到一个文件名 %~x1 - 仅将 %1 扩充到一个文件扩展名 %~s1 - 扩充的路径指含有短名 %~a1 - 将 %1 扩充到文件属性 %~t1 - 将 %1 扩充到文件的日期/时间 %~z1 - 将 %1 扩充到文件的大小 %~$PATH: 1 - 查找列在 PATH 环境变量的目录&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值