没有合适的资源?快使用搜索试试~ 我知道了~
bat/cmd批处理程序设计教程.docx
1 下载量 11 浏览量
2022-12-17
15:05:44
上传
评论
收藏 169KB DOCX 举报
温馨提示
试读
42页
bat/cmd批处理程序设计教程.docx
资源推荐
资源详情
资源评论
bat/cmd批处理程序谣计教程
、彳 是一篇技术教程,我真心诚意会用很简单的文官袤达清楚自己的意思,只要你也咨就 健看懂,
就健皆到知混 我写这篇教程的目的,是让每一个看过这些文言的朋友记住 一句祜:如果爱可“线上
事情变的更简单,那么就让它简单吧!看这篇教程的方法,就 是慢!慢慢的,也同品一#茗茶,你会
发现很多〃前就在眼前的东曲突终度的很遥远,而嘀些 很遥远的东曲却又突然回到了眼前。
先概述一下批处理是个什么东东。批处理的定义,至今我也谩铺给出一个合适的■一•众多 高手
们地嘟祓给出•一•反正我不知还一一看了我也不一定信服-一•我是个菜鸟,当然就更不用 说了;但
我想总错比一个号嗑合适豺,而且我也相信商己可以把它解祥的很清楚,让更多的 菜鸟都知道这是个
什么东东,你用这个东东可以干什么事慵。或裨你会因为这篇文章而”无条 件爱上批处理‘,那么
我的目的就到达了•一一我就是要让你爱上它,我就这么拽,你舔怎么 着??真的,爱密时候就这么
拽,就是这么没理由,就是这么不要脸!真的!
接改我的理解,批处理的本质,是一燧DOS命令按一定顺潺排列而彩成的集合。批处理文 件是无
格式的文本文件,它包含一条或多条命公。它的文件扩展名为.bat或 do在命令 提示下键入批处理文
件的名存,或渚务去孩批处理文件,系铉就会调用Cmd.exe按簸该文件 中各个命令出现的顺序来逐个
运行它们。使用松t理文件(也被称为批处理程涛或脚本),可 以简化日常或潼复性佞务。咨线我们
的这个股本的金要向客是介裕批处理在入侵中一些实际运 用,制如我们后面要提到的用批处理文件来
给系铳打补丁、批量擅人后门程序事
OK,never claver and get to business (闲话歹说言归正传)。批处理,也称为批处理 脚本,英文
祥为BATCH ,批处理文件后辍BAT就取的前三个室母,它的萄或谀密固定格式, 只要遵守,4下这条
就。k 了 :每一行可视名一个命令,每个命令里可以含多条各命令,从第一 行升的执行,直到最后一
行秸束,它运行的平台是DOS。批处理密一个很鲜嬲的特点:使用 方便、灵活,劝能强大,商劲化程
度嬴 我不想让自己写的教程拈嫖无%因为牵蚀到代码(批
1
23
410、start 命令
批处理中调用外部程序的命令(该外部程序在新窗口中运行,批处理程序徒模往下执行,系理会外部程 序的运行状况),也累直接运
行外部程序那么必须等外部程序完成后才徒猿执行剩下的指令例:start explorer d:\
倜用资源管理器并打杆D盘11、assoc 和 ftype
文件关联assoc以盘文件扩展名关联,关联豺文件类型, ftype被翌文件类型关联,关联对执行程存和参数
当你双击一个txt文件时,windows并系是根据.txt直接判断用notepad.exe打歼而是先判断.txt属孑txtfile,文件类型,
再调用 txtfile 关联的命令行 txtfiIe = %SystemRoot%\system32\NOTEPAD.EXE %1可自在"文件夹选项”一 "文件类型”里修改这2种
关联
assoc#显示所前'文件犷展名'关联assoc .txt #显示.txt代表的文件类型’,彳吉果显示.txt=txtfile
assoc .doc#显示.doc代袤的文件类型,,秸果显示.doc = Word.Document.8assoc .exe #显示6乂®代表的文件类型’,夕吉果显示
.exe = exefile
ftype#显示所有文件类型‘关朕ftype exefile #显示exefile类型关联的命令行,秸累显示exefile = "%l" %* assoc .txt =
Word.Document.8
祓置.txt为word类型的文档,可”!看到.txt文件的囹标都啜了assoc .txt = txtfile
恢复.txt的正褊关联ftype exefile = "%1" %*
恢复exefile的正瑞关朕购票该关联已径被破坏,可〃运行command
,再输入送条命令
12、pushd 和 popd
切换咳前目录
#在C:\建立mp3文件夹
#在D:\建立mp4文件夹
#更改当前目录与d:\mp4
#保存当前目录,并切换当前目录为c:\mp3
#恢复当前目录的刚才保存的d:\mp4一般用处系大,在当前目录名曲角定时,会南电帮助。(dos编程中
很痢用)
13、 CALLCALL命令可,4在批处理执行过程中调用另一个批处理,咨另一个批处理执行完后,再徒搂执行原来的枇 处理
CALL command调用一条批处理命令,知直接执行命令数累一样,特殊情况下很菊用,比也度量的多敏嵌套,见教程后 面。在批处理
编程中,可△根据一定条件由成命令容符串,用call可“(执行该令符串,见例各。
CALL [drive:][path]filename [batch-parameters]调用的其它批处理程序。filename参数必须具南.bat或 d犷晨名。
CALL :label arguments调用本文件的命令段,相当孑各程序。被调用的命令段"标签:1abeI界头
“命令goto :eof?吉尾。
另外,批脚奉文走参数参照(%0、%1、等等)已也下改嗖:
批脚布里的%*指出所南的参数(也%1 %2 %3 %4 %5 ...)
批参薮(%n)的替代已被增强。您可“[使用”1下话孩:(看不阚白的直接运行后面的例3)
%~1-蒯除引号(I ,犷羌%1%~fl-将%1扩充到一个免金合格的路径名
%~dl-仅将%1 "先到一个驱动器号%~pl-仅将%1扩充到一个路径
%~nl-仅将%1扩充到一个文件名%~xl-仅将%1扩充到一个文件扩展名
%~sl-扩充的路径指含点短名%~al-将%1犷丸到文件属性
%~tl-将%1 ^先到文件的日期/时间%~zl-将%1扩充到文件的大小
@echo off
c: & cd\ & md mp3 md
d:\mp4
cd /d d:\mp4 pushd
c:\mp3 popd
@echo off
c: & cd\ & md mp3 md
d:\mp4
cd /d d:\mp4 pushd
c:\mp3 popd
%~$PATH : 1 -查找列在PATH环境嗖量的目录,并将%1扩充到找到的第一个完金合格的名称。曲果环境
变量名未被定义,或者没南找到文件,此殂合键会犷先到安存符串
可〃殂合修定符来取得多重秸累
%~dpl・R将%1犷晨到驱动器号和路径
%~nxl-只将%1犷展到文件名和犷晨名
%~dp$PATH:l -在列在PATH妹境变量中的目录里查找%1 ,并扩展到找到的第一个文件的驱动器号和路径。
%~ftzal ・将%1 扩展到类似DIR 的输出行。
-在上面蜀创台中,%1和PATH可被其他前教数值替携%~诒法被一个南数参数号码给止。%~修定符示锚限%*使用
演意:参数犷充时不理会参数所代表的文件是否真实存在,场〃咳前目录进行犷展要理解上面的知祖,下面的向各很关键。
例:
@echo offEcho 产生一个总时文件> tmp.txt
Rem下行先保存当前目录,再将c:\windows被为当葡目录pushd c:\windows
Call :sub tmp.txtRem下行恢复前次的当前目录
PopdCall :sub tmp.txt pause Del tmp.txt exit :sub
Echo删除引号:%~1Echo扩充到路径:%~fl
Echo"充到一个驱动器号:%~dlEcho扩充到一个路径:%~pl
Echo扩充到一个文件名:%~nlEcho扩充到一个文件扩展名:%~xl
Echo扩充的路径指含前短名:%〜s 1Echo扩充到文件属性:%-al
Echo扩充到文件的日期/时间:%~tlEcho"充到文件的大小:%~zl
Echo"展到驱动器号和路径:%-dplEcho"展到文件名和犷晨名:%~nxl
Echo扩展到类似DIR的输出行:%~ftzal Echo.
Goto :eofset aa = 123456
set cmdstr = echo %aa% call %cmdstr%pause
4例中电累米用call ,而直接运行%cmdstr% ,将显示彳吉果%aa% ,而不是123456 14、shift更改枇处理文件中可替换参数的位置。
SHIFT [/n]也累命令"屋名被启用,SHIFT命令支特/n命令行fl■关;该命令行并关告诉 命令从第n个参数外胎移位;n介孑零和八之间。
例姒
SHIFT /2会将%3移位到%2 ,将%4移便到%3 ,等等;并且不影响%0和%lo 15、IF
IF条件判断话句,话核格式也下:
IF [NOT] ERRORLEVEL number commandIF [NOT] stringl = = string2 command IF [NOT] EXIST filename command
下面逐一介馅,更皆知的分折请看后面章节。
(1) IF [NOT] ERRORLEVEL number commandIF ERRORLEVEL这个句各必须放在某一个命令的后面,执行命令后由IF ERRORLEVEL
来判断命令的逡 回值。
Number的数字取值勉渤0〜255 ,判断时值的挪列顺序应该由人到小。逡回的值大孑等孑指定的值时, 条件成立向:
@echo offdir c:
rem退出代码与>二1就魏至标题1处执行,>=0就魏至标题0处执行IF ERRORLEVEL 1 goto 1
IF ERRORLEVEL 0 goto 0Rem上面的曲行不可委换位置,否那么失败了也显示成功。
:0echo命令执行成功!
Rem程序执行完毕眺至标题exit处退出goto exit
:1echo命令执行失败!
Rem程序执行完毕觎至标题exit处退出goto exit
:exitpause
运行显示:命令执行成功!
(2) IF [NOT] stringl = = string2 commandstringl和string2都各字符的数据,英文肉室符的大小与将看作木同,这个条件中的等孑号
於须是两个 (葩对相等的意思)
条件相等后即执行后面的command检测当前嗖量的值做出判断,合了防止李石串中含前空格,可用〃下格式
if [NOT] {stringl} = = {string2} commandif [NOT] [stringl] = = [string2] command
if [NOT] "stringl" = = "string2" command逐种写垓实际上将括号或引号咨或令符串的一部含了二R要等号左右曲边一致就行了 :比
也下面酝汇 就不行:
if {stringl} = = [string2] commandIF [NOT] EXIST filename command
EXIST filename卷文件或目录存在的意思echo off
IF EXIST autoexec.bat echo 文件存在!
IF not EXIST autoexec.bat echo 文件不存在!
这个枇处理大家可〃放在C盘和D盘分别执行,
看看数票
16、setlocal与嗖量延迟
车条内容引用[英福出品]的批处理教程:
要想进阶,变量延迟是必过的一关!斩・4这一割舍希鳖你线认真看。
为了更弁的说明问题,我们先引入一个制多。
例1:
@echo offset a = 4
set a = 5 & echo %a%pause
彳吉票;4解也:必什么是4石不是5呢?在echo之前明明已羟把瘦量a的值改成5 了?
让我们免了解一下批处理运行命令的机制:
批处理读取命令时是按行读取的(另外例由for命令等,其后用一对圆括号闭合的所语语句也咨作一行), 在处理之前要完成必要的预处
理工作,这其中就包括对该行命令中的度量饿债。我们现在今折一下例1, 批处理在运行到这旬“set a = 5 & echo %a%”之前,先把这一
句整甸犊取并做了预处理一—对嗖量a喊了 值,那么%a%劣线就是4 了 !(没痛扮什么,枇处理就是这样做的。)而君了健够感知环
境嗖量的动态嗖化,批处理祓计了要量延迟。简单来说,在犊取了一条完整的话句之 后,不立即对该行的嗖量喊饱,而会在某个单条
语句执行之前再进行戚值,也就是说,延迟”了对嗖量的 底卷
那么如何丹启度量延迟呢?度量延迟又需要演意什么呢?举个例孑说明一下:
向2:
@echo offsetlocal enabledelayedexpansion
set a = 4set a = 5 & echo !a!
pause秸累:5
解说:启动了嗖量延迟,得到了正石角答案。嗖量延迟的启动语句是“setlocal enabledelayedexpansion”, 并且变量要用一对叹号
“!!”括起来(演意要用英文的叹号),否那么就谀痢暧量延迟的放票。
舍折一下俐2 ,首先"setlocal enabledelayedexpansion”开启嗖量延迟,然后"set a = 4”先给嗖量a贼 布.各4 , “set a = 5 & echo 4!”
这句是给嗖量a赋值君5并输出(由孑启动了嗖量延迟,斩八枇处理然够感知 到动态嗖化,即不是先给该行嗖量赋值,布是在运行过程
中给嗖量媵值,因此此时a的值就是5 了)。 再举一个例各巩固一下。
例3:
@echo offsetlocal enabledelayedexpansion
for /I %%i in (1,1,5) do (set a = %%i
echo !a!
) pause 彳吉票:
12
34
5解说:奉召府启了变量延迟并用“!!”将嗖量扩铤来,因此得到我们预期的假设果。电果系用变量延迟会出现 什么浩累呢?秸累是这样的
:
ECHO处孑关闭状态。
ECHO处孑关闭状态。
ECHO处孑关闭状态。
ECHO处孑关闭状态。
ECHO处孑关闭状态。
即流菊感知到for语句中的动态度化。
提示:在没为并启变量延迟的情况下,某条命令行中的变量改变,必须到下一条命令才健表达。这一立 也可总加〃利用,着俐3。
例:委换祗;个嗖量的值,且不用中间嗖量@echo off
::目的:麦换的个度量的值,但是系使用总时度量::Code by 懒得勤快 2014-10-31 [email = CMD@cmd]CMD@cmd[/email] set varl =
abc
set var2 = 123echo 委换前:varl = %varl% var2 = %var2%
set varl = %var2%& set var2 = %varl%echo 委换后:varl = %varl% var2 = %var2% pause
17、ATTRIB显示或更改文件属性ATTRIB [+R|-R] [ + A|-A] [ + S|-S] [+H|-H] [[drive:] [path] filename] [/S [/D]]
+设置属性。
-清除属性。
R 只犊文件属性。
A 存档文件属性。
S系胡文件属怪。
H 隐藏文件属性。
[drive:] [path] [filename] 指定要处理的文件属性。
/S处理当前文件夹及其各文件夹中的匹配文件。
/D也处理文件夹。
WTmd autorun
attrib +a +s +h autorun上面的命令将建立文件夹autorun,然后将其微各右档、系位 隐藏属性
第二节常用特殊符号
1、@命令行回显屏蔽符
2、%批处理度量引导存
3、> 重定向符
4、>>重定向符
5、<、>&、<&重定向符
6、|命令管道符
7、入
转义字符
剩余41页未读,继续阅读
资源评论
xinkai1688
- 粉丝: 320
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功