ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:48.04KB ,
资源ID:6991181      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6991181.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(bat脚本学习.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

bat脚本学习.docx

1、bat脚本学习Bat 脚本学习2015-01-05 14:131652人阅读评论(0)收藏举报版权声明:本文为博主原创文章,未经博主允许不得转载。基础部分:=一、基础语法: 1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。 2.批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。 3.批处理的编程能力远不如C语言等编程语言,也十分不规范。 4.每个编写好的批处理文件都相当于一个DOS的外部命令,把它所在的目录放到DOS搜索路径(path)中,即可在任意位置运行。 5.C:AUTOE

2、XEC.BAT 是每次系统启动时都会自动运行的,可以将每次启动时都要运行的命令放入该文件中。 6.大小写不敏感(命令符忽略大小写) 7.批处理的文件扩展名为 .bat 或 .cmd。 8.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。二、参数: 1) 系统参数 %SystemRoot% = C:WINDOWS (%windir% 同样) %ProgramFiles% = C:Program Files %USERPROFILE% = C:Documents and SettingsAdministrator (子目录有“桌面”,“开始菜单”,“

3、收藏夹”等) %APPDATA% = C:Documents and SettingsAdministratorApplication Data %TEMP% = C:DOCUME1ADMINI1LOCALS1Temp (%TEM% 同样) %APPDATA% = C:Documents and SettingsAdministratorApplication Data %OS% = Windows_NT (系统) %Path% = %SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem (原本的设置) %HOMEDRIVE% =

4、C: (系统盘) %HOMEPATH% = Documents and SettingsAdministrator : 枚举当前的环境变量 setlocal enabledelayedexpansion FOR /F usebackq delims= %i IN (set) DO echo %i !%i! 2) 传递参数给批处理文件 %1-9表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用 %1 到 %9 顺序表示。 Sample: call test2.bat hello haha (执行同目录

5、下的“test2.bat”文件,并输入两个参数) 在“test2.bat”文件里写: echo %1 (打印: hello) echo %2 (打印: haha) echo %0 (打印: test2.bat) echo %19 (打印: hello9)三、批处理基本命令0. help 命令 /? 命令 语法: 命令 /? 可显示此命令的帮助信息 Sample: type /? tmp.txt (把 type 命令的帮助信息写入到tmp.txt文件里) Sample: help type (显示跟“type /?”一样)1.Echo 命令 语法: echo on|off message ECH

6、O ON | OFF 打开回显或关闭回显功能。 ECHO 显示当前回显设置。 ECHO message 显示信息。 echo off 表示在此语句后所有运行的命令都不显示命令行本身;默认是on,on时会显示如: C:文件夹路径命令行。 在实际应用中我们会把这条命令和重定向符号( 也称为管道符号,一般用 )结合来实现输入一些命令到特定格式的文件中。 Sample: echo off Sample: echo hello world (显示出“hello world”) Sample: echo Windows Registry Editor Version 5.00 c:setupreg.reg

7、 (此前还没有 setupreg.reg 这个文件) Sample: echo SourcePath=D:Win2003 c:setupreg.reg (追加内容进 setupreg.reg 这个文件)2. 命令 表示不显示后面的命令,(在入侵过程中自然不能让对方看到你使用的命令啦) 与 echo off 相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。 Sample: echo off (此语句常用于开头,表示不显示所有的命令行信息,包括此句) Sample: echo please wait a minite. Sample: format X: /q

8、/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。)3.Goto 命令 语法:goto label (label是参数,指定所要转向的批处理程序中的行。) 指定跳转到标签行,找到标签行后,程序将处理从下一行开始的命令。 label标签的名字可以随便起,但是最好是有意义的,字母前必须加个冒号“:”来表示这个字母是标签。 goto命令就是根据这个冒号来寻找下一步跳到到那里。经常与 if 配合使用,根据不同的条件来执行不同的命令组。 例题见“5.Pause 命令”4.Rem 命令 语法:Rem Message

9、. (小技巧:用:代替rem) 注释命令,在C语言中相当与/*.*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和自己日后修改。 Sample:Rem Here is the description.5.Pause 命令 会暂停批处理的执行并在屏幕上显示Press any key to continue.的提示,等待用户按任意键后继续 Sample: echo off :begin copy a:*.* d:back echo Please put a new disk into driver A pause goto begin 在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d

10、:back中。 显示的信息提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键再次复制。6.Call 命令 语法: call Drive:Path FileName BatchParameters :label arguments 参数: Drive:Path FileName 指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。 调用另一个批处理程序,并且不终止父批处理程序。 如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令。 call 命

11、令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。 Sample:call=%cd%test2.bat haha kkk aaa (调用指定目录下的 test2.bat,且输入3个参数给他) Sample:call test2.bat arg1 arg2 (调用同目录下的 test2.bat,且输入2个参数给他) 注:可以调用自身(死循环、递归)7.start 命令 调用外部程序,所有的 DOS命令 和 命令行程序 都可以由 start命令 来调用。 入侵常用参数: MIN 开始时窗口最小化 SEPARATE 在分开的空间内开始 16 位 Windows

12、 程序 HIGH 在 HIGH 优先级类别开始应用程序 REALTIME 在 REALTIME 优先级类别开始应用程序 WAIT 启动应用程序并等候它结束 parameters 这些为传送到命令/程序的参数 Sample:start /MIN test2.bat arg1 arg2 (调用同目录下的 test2.bat,且输入2个参数给他,且本窗口最小化) Sample:e:program files极品列车时刻表jpskb.exe (文件路径名有空格时)8.If 命令 if 表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式: 1) IF 语法: if not 参数 = 字符串

13、 待执行的命令 参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号) Sample: if %1 = a format a: Sample: if %1 = goto noparms 2) if exist 语法: if not exist 路径文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 Sample: if exist config.sys edit config.sys (表示如果存在这文件,则编辑它,用很难看的系统编辑器) Sample: if exist config.sys type confi

14、g.sys (表示如果存在这文件,则显示它的内容) 3) if errorlevel number 语法: if not errorlevel 待执行的命令 如果程序返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。(返回值必须按照从大到小的顺序排列) Sample: echo off XCOPY F:test.bat D: IF ERRORLEVEL 1 (ECHO 文件拷贝失败 ) Else IF ERRORLEVEL 0 ECHO 成功拷贝文件 pause 很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),称为错误码errorlevel或称返回码。

15、常见的返回码为0、1。通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令。 4) else 语法: if 条件 (成立时执行的命令) else (不成立时执行的命令) 如果是多个条件,建议适当使用括号把各条件包起来,以免出错。 Sample: if 1 = 0 ( echo comment1 ) else if 1=0 ( echo comment2 ) else (echo comment3 ) 注:如果 else 的语句需要换行,if 执行的行尾需用“”连接,并且 if 执行的动作需用(括起来),否则报错 Sample: if 1 = 0 ( ec

16、ho comment1 ) else if 1=0 ( echo comment2 ) else (echo comment3 ) 5) 比较运算符: EQU - 等于 (一般使用“=”) NEQ - 不等于 (没有 “!=”,改用“ if not 1=1 ”的写法) LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于9.choice 命令 choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的 errorlevel, 然后配合 if errorlevel 选择运行不同的命令。 注意:choice命令为DOS或者Windows系

17、统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。 choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。 使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234 Sample: choice /c:dme defrag,mem,end 将显示: defrag,mem,endD,M,E? Sample: choice /c:dme defrag,mem,end if errorlevel 3 goto defrag (应先判断数值最高的错误码) if errorlevel 2 goto mem if erro

18、tlevel 1 goto end10.for 命令 for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。 1) for %variable | %variable in (set) do command command-parameters %variable 指定一个单一字母可替换的参数。变量名称是区分大小写的,所以 %i 不同于 %I 在批处理文件中使用 FOR 命令时,指定变量建议用 %variable而不要用 %variable。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters

19、为特定命令指定参数或命令行开关。 2) 如果命令扩展名被启用,下列额外的 FOR 命令格式会受到支持: a.FOR /D %variable IN (set) DO command command-parameters 如果集里面包含通配符,则指定与目录名匹配,而不与文件名匹配。 b.FOR /R drive:path %variable IN (set) DO command command-parameters 检查以 drive:path 为根的目录树,指向每个目录中的FOR 语句。 如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。 c.FOR

20、 /L %variable IN (start,step,end) DO command command-parameters 该集表示以增量形式从开始到结束的一个数字序列。 如:(1,1,5) 将产生序列 1 2 3 4 5; 而(5,-1,1) 将产生序列 (5 4 3 2 1)。 d.有或者没有 usebackq 选项: FOR /F options %variable IN (file-set) DO command FOR /F options %variable IN (string) DO command FOR /F options %variable IN (command)

21、 DO command 参数options为: eol=c - 指一个行注释字符的结尾(就一个,如“;”) skip=n - 指在文件开始时忽略的行数。 delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。 tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。 m-n格式为一个范围。通过 nth 符号指定 mth。 如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。 usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且一个单

22、引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。 3) Sample: 1. 如下命令行会显示当前目录下所有以bat或者txt为扩展名的文件名。 for %c in (*.bat *.txt) do (echo %c) a. 如下命令行会显示当前目录下所有包含有 e 或者 i 的目录名。 for /D %a in (*e* *i*) do echo %a b. 如下命令行会显示 E盘test目录 下所有以bat或者txt为扩展名的文件名。 for /R E:test %b in (*.txt *.bat) do echo %b for /r %c in (*)

23、 do (echo %c) : 遍历当前目录下所有文件 c. 如下命令行将产生序列 1 2 3 4 5 for /L %c in (1,1,5) do echo %c d. 以下两句,显示当前的年月日和时间 For /f tokens=1-3 delims=-/. %j In (Date /T) do echo %j年%k月%l日 For /f tokens=1,2 delims=: %j In (TIME /T) do echo %j时%k分 e. 把记事本中的内容每一行前面去掉8个字符 setlocal enabledelayedexpansion for /f %i in (zhidia

24、n.txt) do ( set atmp=%i set atmp=!atmp:8! if !atmp!= ( echo.) else echo !atmp! ) : 读取记事本里的内容(使用 delims 是为了把一行显示全,否则会以空格为分隔符) for /f delims= %a in (zhidian.txt) do echo.%a 4) continue 和 break 利用 goto 实现程序中常用的 continue 和 break 命令, 其实非常简单 continue: 在 for 循环的最后一行写上一个标签,跳转到这位置即可 break: 在 for 循环的外面的下一句写上一

25、个标签,跳转到这位置即可 Sample: (伪代码) for /F options %variable IN (command) DO ( . do command . if . goto continue if . goto break . do command . :continue ) :break四、其它命令1. ping 命令 测试网络联接状况以及信息包发送和接收状况。但是不能够测试端口。 语法:ping IP地址或主机名 -t -a -n count -l size 参数含义: -t 不停地向目标主机发送数据; -a 以IP地址格式来显示目标主机的网络地址; -n count 指定

26、要Ping多少次,具体次数由count来指定; -l size 指定发送到目标主机的数据包的大小。 Sample: ping 192.168.0.1 -t (不停的测试192.168.0.1,按ctrl+c停止) Sample: for /L %a in (0,1,255) do ping 192.168.0.%a -n 1 tmp.txt (ping一下所有的局域网电脑)2. telnet 命令 测试端口使用 telnet IP地址或主机名 端口,使用tcp协议的 Sample: telnet 192.168.0.1 80 (测试192.168.0.1的80端口)3.color 命令 设置背

27、景及字体颜色 语法: color bf b 是指定背景色的十六进制数字; f 指定前景颜色(即字体颜色)。 颜色值: 0:黑色 1:蓝色 2:绿色 3:湖蓝 4:红色 5:紫色 6:黄色 7:白色 8:灰色 9:淡蓝 A:淡绿 B:浅绿 C:淡红 D:淡紫 E:淡黄 F:亮白 如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时的颜色。 如果两参数一样,视为无效输入。只有一个参数时,设置字体。4. random 命令 产生随机数(正整数0)5. exit 命令 结束程序。即时是被调用的程序,结束后也不会返回原程序6. shutdown命令 shutdown -s 关机10. 所有

28、内置命令的帮助信息 ver /? cmd /? set /? rem /? if /? echo /? goto /? for /? shift /? call /? 其他需要的常用命令 type /? find /? findstr /? copy /?五、时间、字符串 1) 分割字符串,以查看时间为例 %源字符串:起始值,截取长度% (起始值从0开始;截取长度是可选的,如果省略逗号和截取长度,将会从起始值截取到结尾; 截取长度如果是负数,表示截取到倒数第几个。) %time% 显示如:11:04:23.03 (完整的时间hh:mm:ss.tt) %time:0,5% 显示hh:mm(即11

29、:04),其中0表示从右向左移位操作的个数,5表示从左向右移位操作的个数 %time:0,8% 显示标准时间格式hh:mm:ss(即11:04:23,前8个字符串) %time:3,-3%显示mm:ss(即从第4个开始,截去最后3个的字符串) %time:3% 显示04:23.03(即去掉前4个字符串) %time:-3% 显示.tt(即最后3个字符串) 上面的字串分割格式,也可以用于其它地方,如目录路径:%cd:0,10% 2) 替换字符串 set a=abcd1234 echo %a% 显示:abcd1234 set a=%a:1=kk% 替换“1”为“kk” echo %a% 显示:abcdkk234 3) 字符串合并 由于没有直接的字符串合并函数,只能用笨方法了。 set str1=%str1%str2% (合并 str1 和 str2) 4) 计算字符串长度 没有现成的函数。如下程序利用 goto形成循环,不断将字符串截短1,并记录截短的次数,到字符串变成空时的次数即长度。 set testStr=This is a test string : 将 testStr 复制到str,str 是个临时字符串 set str=%testStr% : 标签,用于goto跳转 :next1 : 判

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1