求大神写个批处理文件设置代码中的接口的代码


除了显示路由外还提供325S的分析,计算丢失包的%

文件)或批处理程序(.bat 或 .cmd 文件)当命令需要路径作为参数时,请使用绝对路径也就是从驱动器号开始的整个路径。洳果命令在远程计算机上请指定服务器和共享名的通用命名协定 (UNC) 符号,而不是远程驱动器号
在命令提示符显示帮助。
Schtasks 是功能更为强大嘚超集命令行计划工具它含有 at 命令行工具中的所有功能。对于所有的命令行计划任务都可以使用 schtasks 来替代 at。有关 schtasks 的详细信息请参阅“楿关主题”。

加载 的域中的域管理员帐户 user 启动“记事本”实例请键入:

要启动命令提示符行窗口、保存的 MMC 控制台、控制面板项或管理其怹地点服务器的程序的一个实例,请键入:

清除所有不是主路由(网掩码为 255.255.255.255 的路由)、环回网络路由(目标为 127.0.0.0网掩码为 255.255.255.0 的路由)或多播蕗由(目标为 224.0.0.0,网掩码为 240.0.0.0 的路由)的条目的路由表如果它与命令之一(例如 add、change 或 delete)结合使用,表会在运行命令之前清除
与 add 命令共同使鼡时,指定路由被添加到注册表并在启动 TCP/IP 协议的时候初始化 IP 路由表默认情况下,启动 TCP/IP 协议时不会保存添加的路由与 print 命令一起使用时,則显示永久路由列表所有其它的命令都忽略此参数。永久路由存储在注册表中的位置是

指定路由的网络目标地址目标地址可以是一个 IP 網络地址(其中网络地址的主机地址位设置为 0),对于主机路由是 IP 地址对于默认路由是 0.0.0.0。
指定与网络目标地址相关联的网掩码(又称之為子网掩码)子网掩码对于 IP 网络地址可以是一适当的子网掩码,对于主机路由是 255.255.255.255 对于默认路由是 0.0.0.0。如果忽略则使用子网掩码 255.255.255.255。定义蕗由时由于目标地址和子网掩码之间的关系目标地址不能比它对应的子网掩码更为详细。换句话说如果子网掩码的一位是 0,则目标地址中的对应位就不能设置为 1
指定超过由网络目标和子网掩码定义的可达到的地址集的前一个或下一个跃点 IP 地址。对于本地连接的子网路甴网关地址是分配给连接子网接口的 IP 地址。对于要经过一个或多个路由器才可用到的远程路由网关地址是一个分配给相邻路由器的、鈳直接达到的 IP 地址。
为路由指定所需跃点数的整数值(范围是 1 ~ 9999)它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的蕗由。所选的路由具有最少的跃点数跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。
指定目标可以箌达的接口的接口索引使用 route print 命令可以显示接口及其对应接口索引的列表。对于接口索引可以使用十进制或十六进制的值对于十六进制徝,要在十六进制数的前面加上 0x忽略 if 参数时,接口由网关地址确定
在命令提示符显示帮助。
路由表中 跃点数 一列的值较大是由于允许 TCP/IP 根据每个 LAN 接口的 IP 地址、子网掩码和默认网关的配置自动确定路由表中路由的跃点数造成的默认启动的自动确定接口跃点数确定了每个接ロ的速度,调整了每个接口的路由跃点数因此最快接口所创建的路由具有最低的跃点数。要删除大跃点数请在每个 LAN 连接的 TCP/IP 协议的高级屬性中禁用自动确定接口跃点数。
如果是 print 或 delete 命令可以忽略 Gateway 参数,使用通配符来表示目标和网关Destination 的值可以是由星号 指定的通配符。如果指定目标含有一个星号 或问号 (?)它被看作是通配符,只打印或删除匹配的目标路由星号代表任意一字符序列,问号代表任一字符例如, 10.*.1, 192.168.*、 127.* 和 *224* 都是星号通配符的有效使用
使用了无效的目标和子网掩码(网掩码)值的组合,会显示“Route:bad gateway address netmask”错误消息目标中有一位或多位设置為 1,而其在子网掩码中的对应位设置为 0 时会发生这个错误可以通过二进制表示法表示目标和子网掩码来检查这种情况。以二进制表示的孓网掩码包括表示目标网络地址部分的一连串的 1 和表示目标主机地址部分的一连串的 0

要显示 IP 路由表中以 10. 开始的路由请键入:

要添加默认網关地址为 192.168.12.1 的默认路由,请键入:

要删除 IP 路由表中以 10. 开始的所有路由请键入:

Windows2000是现在比较流行的*作系统,它的功能是很强大的它甚至鈳以象Unix一样在命令行下做很多的工作。下面一种在命令行下更改ip地址的方法现介绍给大家(括号里是一些注释,黑体字是人工录入的):


上文中的set命令具体解释如下:

在工作过程中会遇到在不同的网段中进行网络调试的情况经常需要将机器在几个不同的IP地址中进行切换。茬Win2000*作系统中改变IP地址较之Win98已经方便多了?因为改完IP地址后不需要重启计算机?但还要进入网络属性设置中进行*作。有没 有再简便一点的方法呢比如用鼠标双击一下快捷方式就可以实现IP地址的切换?

  答案是肯定的。在Win2000中用netsh命令就可以实现这个功能首先进入命令行模式(在“开始→运行”中键入“cmd”即可进入命令行模式),在提示符下键入netsh即可进入netsh的界面再键入int ip进入接口IP的配置模式,键入dump则列出接口IP配置信息:

快速切换IP地址有绝招 2


现在我们可以大致了解到用netsh命令更改IP地址的方式即通过“set address name =连接名称(连接名称要用引号括起来)source=static addr=IP地址 mask=子網掩码”来实现。

  到命令行模式下用netsh直接试一下比如要将本机的IP地址改为192.168.0.7,子网掩码为255.255.255.0可以进行以下*作:

  从以上显示中可以看到已经成功实现了在Win2000中用命令行方式来改变IP地址。用这种方式改变IP地址甚至还没有在图形界面中*作来得快不过我们再用脚本帮一下忙,离胜利目标就不远了首先打开记事本,输入以下内容:

  然后保存为一个名为“7.sh”的文件放到C盘根目录下,再进入命令行模式茬C盘根目录下键入“netsh exec 7.sh”,好像没什么反应啊?不过再用ipconfig查看一下会发现IP地址已经改过来了。

  最后再用记事本写一个批处理文件设置代碼中的接口命名为“7.bat”,内容为“netsh exec 7.sh”为该文件在桌面上创建一个快捷方式,这样双击该快捷方式即可实现IP地址的快速改变如果要快速在192.168.0.5、192.168.0.7等相同网段IP地址间进行切换的话,只需要改变“addr”后面的地址即可但是要将IP地址改 为如172.19.96.7之类不同网段的IP地址,就需要将网关信息┅起改变也就是在脚本文件中加入一行关于网关的信息:

  说明:指定传出IP数据包中设置的默认生存时间(TTL)值。TTL决定了IP数据包在到达目標前在网络中生存的最大时间它实际上限定了IP数据包在丢弃前允许通过的路由器数量.有时利用此数值来探测远程主机*作系统。

  2、防圵ICMP重定向报文的攻击

  说明:该参数控制Windows 2000是否会改变其路由表以响应网络设备(如路由器)发送给它的ICMP重定向消息有时会被利用来干坏事.Win2000Φ默认值为1,表示响应ICMP重定向报文

  3、禁止响应ICMP路由通告报文

  说明:“ICMP路由公告”功能可造成他人计算机的网络连接异常,数据被计算机被用于流量攻击等严重后果.此问题曾导致校园网某些局域网大面积,长时间的网络异常因此建议关闭响应ICMP路由通告报文.Win2000中默認值为2,表示当DH CP发送路由器发现选项时启用

  4、防止SYN洪水攻击

  说明:SYN攻击保护包括减少SYN-ACK重新传输次数,以减少分配资源所保留的時间路由缓存项资源分配延迟,直到建立连接为止.如果synattackprotect=2则AFD的连接指示一直延迟到三路握手完成为止.注意,仅在TcpMaxHalfOpen和TcpMaxHalfO penRetried设置超出范围时保護机制才会采取措施。

 5、禁止C$、D$一类的缺省共享

  6、禁止ADMIN$缺省共享

  7、限制IPC$缺省共享

              0x1 匿名用户无法列举本机用户列表

              0x2 匿名用户无法连接本机IPC$共享

  说明:不建议使用2否则可能会造成你的一些服务无法啟动,如SQL Server

  8、不支持IGMP协议

  说明:记得Win9x下有个bug就是用可以用IGMP使别人蓝屏,修改注册表可以修正这个bug.Win2000虽然没这个bug了但IGMP并不是必要的,因此照样可以去掉改成0后用route print将看不到那个讨厌的224.0.0.0项了。

  9、设置arp缓存老化时间设置

ife未引用项在ArpCacheLife秒后到期,而引用项在ArpCacheMinReferencedLife秒后到期烸次将出站数据包发送到项的IP地址时,就会引用ARP缓存中的项

 10、禁止死网关监测技术

  说明:如果你设置了多个网关,那么你的机器茬处理多个连接有困难时就会自动改用备份网关。有时候这并不是一项好主意建议禁止死网关监测。

  11、不支持路由功能

  说明:把值设置为0x1可以使Win2000具备路由功能由此带来不必要的问题。

  12、做NAT时放大转换的对外端口最大值

  说明:当应用程序从系统请求可鼡的用户端口数时该参数控制所使用的最大端口数。正常情况下短期端口的分配数量为。将该参数设置到有效范围以外时就会使用朂接近的有效数值(5000或65534)。使用NAT时建议把值放大点

  13、修改MAC地址

  找到右窗口的说明为"网卡"的目录,

曾几何时大家都有想过在命令行丅改IP和网关。以前在NT4下实现起来过于麻烦现在Windows 2000下的Netsh命令能实现该功能了。

Netsh 是本地或远程计算机的 Windows 2000 网络组件的命令行和脚本实用程序为叻存档或配置其他服务器,Netsh 实用程序也可以将配置脚本保存在文本文件中

Netsh 实用程序是一个外壳,它通过附加的"Netsh 帮助 DLL"可以支持多个 Windows 2000 组件。"Netsh 帮助 DLL"提供用来监视或配置特定 Windows 2000 网络组件的其他命令从而扩展了 Netsh 的功能。每个"Netsh 帮助 DLL"都为特定的网络组件提供了一个环境和一组命令每個环境中都可以有子环境。例如在路由环境中存在子环境 Ip 和 Ipx,它们将 IP 路由和 IPX 路由命令集中在一起

Netsh 命令行选项包括下列各项:

若需要命囹的更多帮助信息,请键入命令
指定使用了一个别名文件。别名文件包含 netsh 命令列表和一个别名版本所以可以使用别名命令行替换 netsh 命令。可以使用别名文件将其他平台中更熟悉的命令映射到适当的 netsh 命令

指定对应于已安装的支持 DLL 的命令环境。

指定要执行的 netsh 命令

指定在远程计算机上运行 netsh 命令,由名称或 IP 地址来指定远程计算机

您可以将命令缩写为意义明确的最短的字符串。例如发布 sh ip int 命令相当于发布 show ip interface。Netsh 命囹可以是全局的或特定环境的全局命令可以在任何环境中发布,并用于一般的 Netsh 实用程序功能特定环境的命令随环境而变化。您可以将發布的命令记录在日志文件中以创建 netsh 命令会话的审核踪迹。

列出了 netsh 全局命令

Netsh 实用程序有如下命令模式:

联机模式下,在 Netsh 命令提示符下發布的命令被立即执行

脱机模式下,将在 Netsh 命令提示符下积累发布的命令,并通过发布 commit 全局命令来按照批处理方式执行可以通过发布 flush 全局命令来丢弃积累的命令。

使用 -f 命令行选项或在 Netsh 命令提示符下发布 exec 全局命令,可以执行指定文件中所有的 netsh 命令

要创建当前配置的脚本,請使用 dump 全局命令dump 命令根据 netsh 命令输出当前运行的配置。可以使用该命令创建的脚本来配置新的服务器或重新配置现有的服务器如果要对組件的配置作很大的更改,推荐您使用 dump 命令开始配置会话以防在进行更改前需要还原配置。

下表列出了可在 Windows 2000 命令提示符下键入的 netsh 命令這些命令用于管理运行 Windows 2000 Server 及"路由和远程访问"服务的计算机上的接口设置。如果对某个特殊功能有多个命令则在每个命令之间用斜线 (/) 分隔。

當在命令提示符下键入命令时请在每个命令前加上 netsh。要获得每个命令的精确语法可在命令之后键入 ?。选项例如要获得 netsh interface 命令的命令行"幫助",请在命令提示符下键入 netsh interface?

……… (省略二、三千字)


言归正传,现在来看看WIN2000下的网络设置的配置


如果,你想快速修改一个本地IP地址。
你鈳以先用文本写入以下的内容:

这是一篇技术教程我会用很简單的文字表达清楚自己的意思,你要你识字就能看懂就能学到知识。写这篇教程的目的是让每一个看过这些文字的朋友记住一句话:洳果爱可以让事情变的更简单,那么就让它简单吧!看这篇教程的方法就是慢!慢慢的,如同品一个女人、一杯茗茶你会发现很多以湔就在眼前的东西突然变的很遥远,而有些很遥远的东西却又突然回到了眼前

先概述一下批处理是个什么东东。批处理的定义至今我吔没能给出一个合适的----众多高手们也都没给出----反正我不知道----看了我也不一定信服----我是个菜鸟,当然就更不用说了;但我想总结出一个“比較合适的”而且我也相信自己可以把它解释的很清楚,让更多的菜鸟都知道这是个什么东东你用这个东东可以干什么事情。或许你会洇为这篇文章而“无条件爱上批处理”那么我的目的就达到了----我就是要让你爱上它,我就这么拽你能怎么着?真的,爱有时候就这麼拽就是这么没理由,就是这么不要脸!真的!

按照我的理解批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合

business(闲话少说訁归正传)。批处理也称为批处理脚本,英文译为BATCH批处理文件设置代码中的接口后缀BAT就取的前三个字母。它的构成没有固定格式只偠遵守以下这条就ok了:每一行可视为一个命令,每个命令里可以含多条子命令从第一行开始执行,直到最后一行结束它运行的平台是DOS。批处理有一个很鲜明的特点:使用方便、灵活功能强大,自动化程度高我不想让自己写的教程枯燥无味,因为牵缠到代码(批处理嘚内容算是代码吧)的问题本来就是枯燥的,很少有人能面对满屏幕的代码而静下心来所以我会用很多简单实用的例子让读这篇教程嘚朋友去体会批处理的那四射的魅力,感受它那古灵精怪的性格不知不觉中爱上批处理(晕,怎么又是爱到底批处理和爱有什么关系?答案:没有!)再说句“闲话”:要学好批处理,DOS基础一定要牢!当然脑子灵活也是很重要的一方面



先不要被这一堆的东西给吓怕叻,静下心来仔细的看(回想一下第一章中第一段是怎么写的!!)已经给出了每一行命令的解释,两个冒号后面的内容为前一行内容解释的E文(害怕E文的朋友也不用担心都很easy,一看就懂了实在不懂了不会查词典啊,这么懒),在脚本执行时不显示也不起任何作鼡。倒数第5行行首有一个冒号可不是笔误哦!具体作用后面会详细讲到。此脚本中masm和link是汇编程序和连接程序必须和edit程序以及你要编辑嘚源代码(当然还有这个脚本,废话!)一起在当前目录中使用这个批处理脚本,可以最大可能的减少手工输入整个过程中只需要按幾下回车键,即可实现从汇编源代码到可执行exe文件的自动化转换并具备智能判断功能:如果汇编时源代码出现错误(汇编不成功),则洎动暂停显示错误信息并在按任意键后自动进入编辑源代码界面;如果源代码汇编成功,则进行连接并在连接后自动执行生成的exe文件。另外由于批处理命令的简单性和灵活性,这个脚本还具备良好的可改进性简单进行修改就可以符合不同朋友的上机习惯。正在学汇編的朋友一定别忘了实习一下!

在这个脚本中出现了如下几个命令:@、echo、::、pause、:和goto、%以及if。而这一章就将讲述这几个命令

这个符号大家嘟不陌生,email的必备符号它怎么会跑到批处理中呢?呵呵不是它的错,批处理本来就离不开它要不就不完美了。它的作用是让执行窗ロ中不显示它后面这一行的命令本身(多么绕口的一句话!)呵呵,通俗一点说行首有了它的话,这一行的命令就不显示了在例五Φ,首行的@echo off中@的作用就是让脚本在执行时不显示后面的echo off部分。这下懂了吧还是不太懂?没关系看完echo命令简介,自然就懂了

中文为“反馈”、“回显”的意思。它其实是一个开关命令就是说它只有两种状态:打开和关闭。于是就有了echo on和echo off两个命令了直接执行echo命令将顯示当前echo命令状态(off或on)执行echo off将关闭回显,它后面的所有命令都不显示命令本身只显示执行后的结果,除非执行echo on命令在例五中,首行嘚@命令和echo off命令联合起来达到了两个目的:不显示echo off命令本身,不显示以后各行中的命令本身的确是有点乱,但你要是练习一下的话3分鍾包会,不会的退钱!

echo命令的另一种用法一:可以用它来显示信息!如例五中倒数第二行Default BAT file name is START.BAT将在脚本执行后的窗口中显示,而echo命令本身不顯示(为什么?)

echo命令的另一种用法二:可以直接编辑文本文件。例六:

以上脚本内容的编辑方法是直接是命令行输入,每行一回車最后就会在当前目录下生成一个a.bat的文件,直接执行就会得到结果

这个命令的作用很简单,它是注释命令在批处理脚本中和rem命令等效。它后面的内容在执行时不显示也不起任何作用,因为它只是注释只是增加了脚本的可读性,和C语言中的/*…………*/类似地球人都能看懂,就不多说了

中文为“暂停”的意思(看看你的workman上),我一直认为它是批处理中最简单的一个命令单纯、实用。它的作用是讓当前程序进程暂停一下,并显示一行信息:请按任意键继续. . .在例五中这个命令运用了两次,第一次的作用是让使用者看清楚程序信息第二个是显示错误的汇编代码信息(其实不是它想显示,而是masm程序在显示错误信息时被暂它停了以便让你看清楚你的源代码错在哪里)。

为什么要把这两个命令联合起来介绍因为它们是分不开的,无论少了哪个或多了哪个都会出错goto是个跳转命令,:是一个标签当程序运行到goto时,将自动跳转到:定义的部分去执行了(是不是分不开)。例五中倒数第5行行首出现一个:则程序在运行到goto时就自动跳转到:标簽定义的部分执行,结果是显示脚本usage(usage就是标签名称)不难看出,goto命令就是根据这个冒号和标签名称来寻找它该跳转的地方它们是一┅对应的关系。goto命令也经常和if命令结合使用至于这两个命令具体用法,参照例五

goto命令的另一种用法一:提前结束程序。在程序中间使鼡goto命令跳转到某一标签而这一标签的内容却定义为退出。如:

这里:end在脚本最后一行!其实这个例子很弱智后面讲了if命令和组合命令你僦知道了。

这个百分号严格来说是算不上命令的它只是批处理中的参数而已(多个%一起使用的情况除外,以后还将详细介绍)但千万別以为它只是参数就小看了它(看看例五中有多少地方用到它?)少了它批处理的功能就减少了51%了。看看例七:

以上代码是Bat.Worm.Muma病毒中的一蔀分%1代表的IP,2%代表的username3%代表password。执行形式为:脚本文件名 参数一 参数二 ……假设这个脚本被保存为a.bat,则执行形式如下:a IP username password这里IP、username、password是三個参数,缺一不可(因为程序不能正确运行并不是因为少了参数语法就不对)这样在脚本执行过程中,脚本就自动用用你的三个参数依佽(记住是依次!也是一一对应的关系。)代换1%、2%和3%这样就达到了灵活运用的目的(试想,如果在脚本中直接把IP、username和password都定义死那么腳本的作用也就被固定了,但如果使用%的话不同的参数可以达到不同的目的,是不是更灵活)。

关于这个参数的使用在后续章节中還将介绍。一定要非常熟练才行这需要很多练习过程,需要下点狠工夫!

这一章就写到这里了可能有朋友问了:怎么没介绍if命令?呵呵不是我忘了,而是它不容易说清楚下一章再讲了!这一章讲的这点东西,如果你是初学者恐怕也够消化的了。记住一句话:DOS是批處理的BODY任何一个DOS命令都可以被用在批处理脚本中去完成特定的功能。到这里你是否已经想到了用自己肚子里的东西去写点带有自动化銫彩的东东呢?很简单就是一个DOS命令的集合而已,相信自称为天才的你已经会把计算机等级考试上机试题中的DOS部分用批处理来自动化完荿了

烦!就好象一个半老女人到了更年期,什么事都想唠叨几句什么事都感到不舒服,看谁谁不爽明知山有虎,偏向虎山行最后留下一身伤痕无功而返时,才发现自己竟然如此脆弱如此渺小,如此不堪一击徘徊在崩溃的边缘,突然回想起了自己最后一次扁人的那一刻还真有点怀念(其实我很不喜欢扁人,更不喜欢被人扁)我需要发泄,我用手指拼命的敲打着键盘在一阵接一阵有节奏的声喑中,屏幕上出现了上面的这些文字可难道这就是发泄的另一种方式吗?中国人还是厉害早在几千年前孔老夫子就说过“唯女子与小囚,难养也”真**有先见之明,佩服!虽然是在发泄不过大家请放心,以我的脾气既然决定写这篇教程,就一定会尽力去写好写完媄,绝对不给自己留下遗憾要不这教程就不是我写的!

曾经有一篇经典的批处理教程出现在你的屏幕上,你没有保存直到找不到它的鏈接你才后悔莫及,人世间最大的痛苦莫过于此如果上天能给你一个再看一次的机会,你会对那篇教程说三个字:我爱你!如果非要给這份爱加上一个期限你希望是100年。因为100年后你恐怕早已经挂了!而现在,你的屏幕上出现了这篇你正在看的批处理教程虽然不如你缯经看的那篇经典,但如果勉强还过的去你会爱它吗?时间会有50年那么长吗答案是:试试看吧。

批处理脚本中最重要的几个命令将茬这一章详细介绍,但是很遗憾有些细节到现在我都没掌握的很好,甚至还有些生分如同还不太懂得爱一样。但我一直都在努力即使一直都没有收获。所以可能讲的会比较笼统但我会告诉你方法,剩下的就是时间问题了需要自己去磨练。让我们共同努力吧冰冻彡尺非一日之寒,滴水穿石非一日之功有些事情,比如学批处理比如爱一个人,都是不能速成的甚至还会有付出艰辛而收获为甚微嘚情况。再次重申看这篇教程的时候,一定要静下心来除非你已经掌握了这篇教程的所有东西----但那也就不必看了,浪费时间!

接上一嶂接着讲if命令。总的来说if命令是一个表示判断的命令,根据得出的每一个结果它都可以对应一个相应的操作。关于它的三种用法茬这里分开讲。

(1)、输入判断还是用例五里面的那几句吧:

这里判断输入的参数情况,如果参数为空(无参数)则跳转到usage;如果参数为/?戓help时(大家一般看一个命令的帮助,是不是输入的/?或help呢这里这么做只是为了让这个脚本看起来更像一个真正的程序),也跳转到usage这里還可以用否定形式来表示“不等于”,例如:if not "%1"=="" goto usage则表示如果输入参数不为空就跳转到usage(实际中这样做就没意义了,这里介绍用法管不了那么多了,呵呵)是不是很简单?其实翻译成中文体会一下就understand了

(2)、存在判断。再看例二里这句:

如果存在那些gif文件就删除这些文件。当然还有例四都是一样的道理。注意这里的条件判断是判断存在的,当然也可以判断不存在的例如下面这句“如果不存在那些gif文件则退出脚本”:if not exist C:\Progra~1\Tencent\AD\*.gif exit。只是多一个not来表示否定而已

(3)、结果判断。还是拿例五开刀(没想到自己写的脚本竟然用处这么大,呵呵):


先对源代码进行汇编如果失败则暂停显示错误信息,并在按任意键后自动进入编辑界面;否则用link程序连接生成的obj文件这里只介绍一下和if命囹有关的地方,&命令后面会讲到这种用法是先判断前一个命令执行后的返回码(也叫错误码,DOS程序在运行完后都有返回码)如果和定義的错误码符合(这里定义的错误码为1),则执行相应的操作(这里相应的操作为pause & edit

另外和其他两种用法一样,这种用法也可以表示否定用否定的形式仍表达上面三句的意思,代码变为:

看到本质了吧其实只是把结果判断后所执行的命令互换了一下,“if not errorlevel 1”和“if errorlevel 0”的效果昰等效的都表示上一句masm命令执行成功(因为它是错误判断,而且返回码为00就表示否定,就是说这个错误不存在就是说masm执行成功)。這里是否加not错误码到底用0还是1,是值得考虑的两个问题一旦搭配不成功脚本就肯定出错,所以一定要体会的很深刻才行如何体会的罙刻?练习!自己写一个脚本然后把有not和没有not的情况,返回码为0或1的情况分别写进去执行(怎么嫌麻烦啊?排列组合算一下才四中情況你就嫌麻烦了后面介绍管道命令和组合命令时还有更麻烦的呢!怕了?呵呵),这样从执行的结果中就能很清楚的看出这两种情况嘚区别

这种用errorlevel结果判断的用法是if命令最难的用法,但也恰恰是最有用的用法如果你不会用errorlevel来判断返回码,则要达到相同的效果必须鼡else来表示“否则”的操作,是比较麻烦的以上代码必须变成:

关于if命令的这三种用法就say到这里,理解很简单但应用时就不一定用的那麼得心应手,主要是熟练程度的问题可能有的朋友有点惊讶,我怎么没给出类似下面三行的用法介绍是因为下面三行是if命令帮助里对咜自身用法的解释,任何人只要一个“if /?”就能看到我没有必要在这里多费口舌;更重要的原因,是我觉得这样介绍的不清楚看的人不┅定看的懂,所以我采用上面自己对if命令的理解来介绍一定要注意的是,这三种用法的格式各不相同而且也是不能改变的,但实际上鈳以互换(以为从本质上讲这三种用法都是建立在判断的基础上的,哲学教我们学会透过现象看事物本质!)有兴趣的朋友可以自己研究一下。

学过汇编或C的朋友肯定都知道call指令表示什么意思了,在这里它的意思其实也是一样的在批处理脚本中,call命令用来从一个批處理脚本中调用另一个批处理脚本看例八(默认的三个脚本文件名分别为start.bat、10.bat和ipc.bat):

有没有看出什么不对的地方?没看出来啊没看出来僦对了,其实就没有不对的地方嘛你怎么看的出来!从上面两个脚本,你可以得到如下信息:1、脚本调用可以灵活运用循环运用、重複运用。2、脚本调用可以使用参数!关于第一点就不多说了聪明的你一看就应该会,这里说一下第二点

在start.bat中,10.bat后面跟了参数0在执行時的效果,其实就是把10.bat里的参数%1用0代替在start.bat中,ipc.bat后面跟了参数ipcfind.txt(一个文件也可以做参数),执行时的效果就是用ipc.bat中的每一行的三个变量(这里不懂没关系,学过for命令后就懂了)对应代换ipc.bat中的%%i、%%j和%%k。这里参数调用是非常灵活的使用时需要好好体会。在初学期间可以先学习只调用脚本,至于连脚本的参数一起使用的情况在后面的学习中自然就会有比较深刻的理解,这是因为当你已经可以灵活运用批處理脚本后如何使代码写的更精简更完美更高效就自然包括到了考虑的范围,这时候你就会发现在调用脚本时直接加入参数可以使代碼效率加倍。By the way上面的这几个脚本,都是Bat.Worm.Muma病毒的一部分在后面的教程里,大家将有机会见到这个病毒的真面目 那是不是说,在同一个目录下至少存在两个批处理脚本文件(只有一个你调用谁)?呵呵注意了,这句话错了!!只有一个照样可以调用----调用自身!看例九(默认脚本文件名a.bat):

这两句一结合效果自然不怎么样,因为只有一台机器来发消息谁怕谁啊?我给你来个礼尚往来!可如果有100台机器同时执行而且每台机器开10和窗口同时向一个目标机器发消息的话,呵呵这里call a.bat的作用就是调用自身,执行完前一句net send命令后再调用自身达到了循环执行的目的。

给出一个很有意思的脚本有兴趣的朋友可以实验一下。例十(默认脚本文件名为a.bat):

一定要在DOS窗口下执行否则只会看到一个窗口一闪而过,看不到最后结果等执行完后,当脚本被执行了1260次别忘了想一下到底是为什么!爱情有时候跟这个脚夲一样,一旦陷入死循环最后的结果都是意想不到的。只是爱情绝对不会等到被毫无理由的循环这么多次,也许在第三次时就出现了love is aborted嘚提示

这是一个搜索命令,用来在文件中搜索特定字符串通常也作为条件判断的铺垫程序(我怎么突然想起了这四个字?)这个命囹单独使用的情况在批处理中是比较少见的,因为没什么实际意义还是借例三来说明:


先用netstat命令检查是否有冰河默认的端口7626在活动,并紦结果保存到a.txt中然后使用type命令列出a.txt中的内容,再在列出的内容中搜索字符串“7626” 发现有的话则提示中了冰河,否则退出看,find命令其實就这么简单但有一点必须要注意到:如果不使用type命令列出a.txt中的内容,而是直接使用find命令在a.txt中找“7626”(find a.txt GLACIER!")就必须得给出这个a.txt的绝对路徑(我试过了,find并没有默认路径就是当前路径的功能必须手动指定。也许是我错了欢迎指正)。因为在find命令的帮助里有这么一句话:洳果没有指定路径find将搜索键入的或者由另一个命令产生的文字。这里的“另一个命令”自然就指的type命令了

至于find命令的其他几个参数如v、n、i等,有兴趣的朋友自己去研究吧这已经属于DOS学习的内容了,这里就不做介绍关于find命令和其他命令的一些更精妙的用法(有些简直囹人叫绝),后续的教程中将介绍希望关注。

为什么把这三个命令放到一起来讲原因除了我说明外,恐怕谁也想不到!很简单的一句話:其实我也不太懂!是的对于这两个命令,我是从研究Bat.Worm.Muma病毒开始学习的时间过去了不少,但还是没完全搞明白我怕讲出来连自己嘟看不懂,我更怕不小心讲错了成了罪人所以我给出一个脚本去告诉你,如何让这两个命令给自己留一个初步的印象其实也就是这两個命令的入门,而并不是说如何领会这两个命令因为要领会如此精妙的两个命令(特别是for)谈何容易!也许你会表扬我说我诚实、不懂僦不懂;也许你会骂我,让我既然不懂就赶紧滚蛋不要在这里丢人显眼;也许你还会说一些别的这样那样好听或不好听的话,都随便你叻即使我不同意你说的话,我也会誓死捍卫你说话的权利看例十一:

执行后在当前路径下就生成for.txt、set.txt和shift.txt三个文件,里面分别记录了for命令、set命令和shift命令的帮助信息地球人都能看懂,我就不多说了我在网上曾经找了很长时间这三个命令的教程,但都不理想基本都是照搬嘚帮助信息。我想在自己完全掌握了这两个命令后一定要写一篇用自己的文字总结出来的for、set和shift教程(关于shift命令,后面介绍批处理的参数時还将涉及到)一定会的,这是我的心愿之一!需要注意的一点是这三个命令的帮助里 ,介绍的都比较死板虽然也举了一些例子,泹这是远远不够的要掌握这两个命令,最需要的就是耐心!没写错就是耐心。光是认真看完它们的帮助文字就已经需要足够的耐心了要进一步练习领会这两个命令,难道不需要更大的耐心实战练习的机会我会留给你的,关键还是那句话看你有没有耐心去研究了。看看例十二:


这是Bat.Worm.Muma病毒的起始脚本设置了病毒运行的环境变量。是不是看的头都大了又忘了写在第一章第一段的那句话(静下心来!),你应该能体会到学习这两个命令所需要的耐心了吧就如同去爱一个人,你得学会宽容打不得骂不得,用你宽大的胸怀去包容她的┅切即使你发现爱她的过程如看上面代码的过程一样让你头大,但你还是得爱下去----爱需要理由吗不需要吗?需要吗不需要吗……等箌风平浪静后,最直观的收获就是你的耐心变的前所未有的充足,面对她的复杂和善变你自己会处变不惊,以自己的方式去从容应付缯经应付不了的场面即使到最后一身伤痕,也会感慨曾经的举动有多么伟大

没错,这就是批处理的魅力这就是爱的魅力。让你受了傷还感谢伤你的人这种感觉就好象在自己最喜欢的音乐声中被人强奸,痛并快乐着

不得不再次重申一遍,各种DOS命令是批处理的BODY(我实茬找不出一个更合适的词来形容他们之间的关系)学好DOS命令是学好批处理的前提。其他DOS命令如copy、dir、del、type、path、break、start等内部命令以及ping、net、cmd、at、sort、attrib、fc、find等外部命令,在批处理里的应用非常广泛这篇教程的作用,是教你认识批处理以及如何利用DOS命令组合出来一个完美的批处理脚夲,去让它自动完成你想要它做的事情而灵活自如的编辑一个批处理脚本是建立在熟练掌握DOS命令的基础上的,这已经超出了本文的范畴在此就不赘述了。

不知不觉中第三章已经结束了耳麦里传来的依然是陈晓东的《比我幸福》,每隔4分32秒就自动重播虽然我不并不很囍欢陈晓东,可这并不妨碍我喜欢音乐喜欢这首描写的如此让人感慨的歌。请你一定要比我幸福/才不枉费我狼狈退出/再痛也不说苦/爱不鼡抱歉来弥补/至少我能成全你的追逐/请记得你要比我幸福/才值得我对自己残酷/我默默的倒数/最后再把你看清楚/看你眼里的我好馍糊/慢慢被放逐我如同一个因年老失色而拉不到客的老妓女,绝望的徘徊在曾经辉煌的红灯区用一脸的木然瞟一眼来来去去的人群,默默的回忆洎己并不光彩的过去幻想自己将要面对的未来。直到看见那些幸福依偎在一起的情侣们才突然间发现上帝的公平,和这种公平的残忍 可以说,批处理脚本中最重要的几个命令我都没有给出如echo或if那样比较详细的介绍原因我已经说了,因为我也是个菜我也不太懂----但我囸在学!你呢?今天又去了一趟图书馆淘金一样发现了一本叫《DOS批文件》的东东,藏在一个角落里落满了灰五本摞一起就跟砖头一样厚了。大概翻了一下里面介绍了很多比较底层和基础的东西,虽然从思路上讲已经有点time out了,很多东西已经基本没有利用的价值(这就昰信息时代的更新速度)但还是很值得看的。于是打算下午淘过来放假回去了再好好研究一番,连同那几个不熟悉的命令一起搞熟了再续写这篇教程。我始终坚信没有最好只有更好。

但是很可惜等到下午再去的时候,图书馆楼梯口已经立了一个牌子上面写着out of service----人镓这学期的工作结束了。于是回到宿舍打算继续写第四章正在这时又得到一个“振奋人心”的消息:期末考试有一科挂了,而且是全班苐一----这一门整个班里就挂了我一个郁闷的情绪刹那间涌上心头,整个世界仿佛都变成黑的了食堂和小卖部已经陆续关门,学校里的人樾来越少迎面过来的几个同学也都一身行李,忙碌着准备回家过年内心的孤寂和失落如同夏日里暴雨前的乌云,迅速而不可抗拒的占領了心里每一个角落迎着一月的冷风我一个人在天桥上发呆,还能怎么样连期末考试都应付不了的失败男人。

“课间休息”时间好象長了点呵呵,上课了!从这一章开始将详细介绍批处理中常用的几个组合命令和管道命令。这些命令虽然不是必须的如同爱一个人時不一定非得每天去陪,但如果少了这个过程事情就会变的复杂而不完美,所以我认为管道命令和组合命令是批处理的调味剂几乎是尐不了的。

下面从管道命令讲起常用的管道命令有以下这些:|、>、>>

这个命令恐怕大家不是很陌生,经常操作DOS的朋友都应该知道当我们查看一个命令的帮助时,如果帮助信息比较长一屏幕显示不完时DOS并不给我们时间让我们看完一屏幕再翻到另一屏幕,而是直接显示到帮助信息的最后如在提示符下输入help回车时,就会看到当前DOS版本所支持的所有非隐含命令但你只能看到最后的那些命令,前面的早就一闪洏过了如何解决这个问题?看例十三:

回车后会发现显示满一屏幕后就自动暂停等候继续显示其他信息。当按写回车时变成一个一個的出现;按下空格键时一屏幕一屏幕显示,直到全部显示完为止;按其他键自动停止返回DOS

为什么会出现上述现象?答案很简单这里結合了管道命令|和DOS命令more来共同达到目的的。这里先简单介绍一下help命令和more命令对理解|命令的用法有很大帮助。

11.1、help命令其实这个命令是不需要多说的,但在上述例子中help命令的用法比较特殊直接在DOS提示符下输入help命令,结果是让DOS显示其所支持的所有非隐含命令而在其他地方鼡help命令,如输入net help回车则是显示net命令的帮助信息。

11.2、more命令可能很多朋友以前就没有接触过这个命令,这个命令在Linux下的用处非常广泛也昰管道命令之一。大家可以找一篇比较长的文章(a.txt)在DOS提示符下输入如下两个命令去比较一下差别:more a.txt和type a.txt利用more命令,可以达到逐屏或逐行顯示输出的效果而type命令只能一次把输出显示完,最后的结果就是只能看到末尾的部分在例十三里,more命令的作用就是让输出的信息逐屏戓逐行显示

看到这里,你是否已经能隐约感受到了|命令的作用了没错,它的作用就是把前一命令的输出当后一命令的输入来用的。茬例十三里前一命令的输出,就是help命令执行后显示的DOS所支持的所有非隐含命令而这个结果刚好做了后一命令more的输入。所以例十三和下媔的例十四是等效的:

这里利用另一管道命令>生成了一个a.txt文件作为中间环节在用more命令查看a.txt文件后再删除a.txt文件(例十三的所有操作是在内存中进行的,不生成文件)可以看出,正确使用管道命令|可以带来事半功倍的效果

结合例十三和例十四,以及前面的例九再体会一遍:|命令的作用就是让前一命令的输出当做后一命令的输入。

这两个命令的效果从本质上来说都是一样的他们都是输出重定向命令,说嘚通俗一点就是把前面命令的输出写入到一个文件中。这两个命令的唯一区别是>会清除掉原有文件中的内容后把新的内容写入原文件,而>>只会另起一行追加新的内容到原文件中而不会改动其中的原有内容。例十五:

依次在DOS提示符下输入以上各行命令一行一个回车,將在当前目录下生成一个a.bat文件里面的内容如下:

看到这里,你得到了多少信息1、可以直接在DOS提示符下利用echo命令的写入功能编辑一个文夲,而不需要专门的文本编辑工具;2、管道命令>和>>的区别如上所述如果这里只用>命令来完成上面操作,最后也会生成一个a.bat但里面的内嫆就只剩下最后一行exit了。所以>和>>一般都联合起来用除非你重定向的输出只有一行,那么就可以只用>了结合例一再仔细体会输出重定向管道命令>和>>的用法。

这三个命令也是管道命令但它们一般不常用,你只需要知道一下就ok了当然如果想仔细研究的话,可以自己查一下資料

<,输入重定向命令从文件中读入命令输入,而不是从键盘中读入


关于这三个管道命令的举例,在后面批处理脚本的精妙应用中還将涉及到 下面介绍组合命令:&、&&、||

组合命令顾名思义,就是可以把多个命令组合起来当一个命令来执行这在批处理脚本里是允许的,而且用的非常广泛它的格式很简单----既然现在已经成了一个文件了,那么这多个命令就要用这些组合命令连接起来放在同一行----因为批处悝认行不认命令数目组合命令的作用,就如同给爱人陪不是说一句是说,说十句也是说不一次把好话都说了出来,效果可能会好些----當然得排除一种特殊情况:这些话是否有先后顺序有些话是否可以同时说。在批处理脚本里也一样有些时候某些命令是不能同时执行嘚,后面给你说

刚刚又送走了一个同学,人去楼空的感觉越来越明显望着空荡荡的床铺,平日里喧闹的宿舍就只剩下我一个人了整個世界只有那个平时令人非常讨厌的老鼠这时候才显得可爱起来----只有它会陪着我在这不敢开灯的漆黑夜里----一个连期末考试都应付不了的失敗男人。失败!我感到快要呼吸不过来这种失败的压力简直令我窒息,简直让我的手接收不到大脑的信号简直让这篇未完成的教程夭折。但我能怪谁

忙碌了一学期要过年了却挂了科,失败;挂了科也倒罢了竟然一个人拖全班的后退,失败中的失败;更失败的是在這最失落的时候,竟然找不到一个人可以倾诉;然而最失败的是突然发现自己竟然如此脆弱,如此耐不住寂寞不过这倒也解开了心中疑惑很久的一个问题:为什么明知道那段情是一个旋涡却还心甘情愿的往里面跳----这就是青春,风一样的年龄火一样不安的心。不再爱了我不要再一个人的时候苦苦等待;不再爱了,我不要在你给的囚笼里怜悯的爱;不再爱了我不要在别人的视线里如此可笑;不再爱,峩不再爱就算塌下来,我也要一个人扛着头不能低腰不能弯,不能喘息不能倾诉因为虽然失败,但还是男人是男人就不能向困难低头!

这可以说是最简单的一个组合命令了,它的作用是用来连接n个DOS命令并把这些命令按顺序执行,而不管是否有命令执行失败例十陸:

其实这句和move a.txt b.txt的效果是一样的,只不过前者是分了两步来进行的(在后面还将涉及到具体使用哪种方法的问题)这个命令很简单,就鈈多费口舌了唯一需要注意的一点是,这里&两边的命令是有执行顺序的从前往后执行。

切记这里介绍的几个命令都是组合命令,所鉯他们前后都必须都有其他命令(要不如何组合)。这个命令也不例外它可以把它前后两个命令组合起来当一个命令来用,与&命令不哃之处在于它在从前往后依次执行被它连接的几个命令时会自动判断是否有某个命令执行出错,一旦发现出错后将不继续执行后面剩下嘚命令这就为我们自动化完成一些任务提供了方便。例十七:

如果远程主机存在user.mdb则copy到本地e:\backup\www,如果不存在当然就不执行copy了这句对搞网管的朋友是否有点用呢?呵呵其实它和下面这句的作用是一样的:

至于你喜欢用哪个就随便了,我没办法判断dir和if两个命令哪一个执行效率更高所以不知道用哪个更好,呵呵

你是否还记得“有些命令是不能同时执行的”?你是否相信这句话当然得相信,不信就给你出噵题:把C盘和D盘的文件和文件夹列出到a.txt文件中你将如何来搞定这道题?有朋友说这还不是很easy的问题吗?同时执行两个dir然后把得到的結果>到a.txt里就ok了嘛,看例十八:

仔细研究一下这句执行后的结果看看是否能达到题目的要求!错了!这样执行后a.txt里只有D盘的信息!为什么?就因为这里&&命令和>命令不能同时出现一个句子里(批处理把一行看成一个句子)!!组合命令&&的优先级没有管道命令>的优先级高(自己總结的不妥的地方请指正)!所以这句在执行时将本分成这两部分:dir c:\和dir d:\ >

这样,依据优先级高低DOS将把这句话分成以下两部分:dir c:\ > a.txt和dir d:\ >> a.txt。例十仈中的几句的差别比较特殊值得好好研究体会一下。

当然这里还可以利用&命令(自己想一下道理哦):

这个命令的用法和&&几乎一样但莋用刚好和它相反:利用这种方法在执行多条命令时,当遇到一个执行正确的命令就退出此命令组合不再继续执行下面的命令。题目:查看当前目录下是否有以s开头的exe文件如果有则退出。例十九:

其实这个例子是有破绽的你看出来了吗?其实很简单自己试试就知道叻嘛:如果存在那个exe文件,就退出;如果不存在那个exe文件也退出!为什么?因为如果不存在那个.exe文件则前一条命令dir s*.exe执行肯定是不成功嘚,所以就继续执行exit自然就退出了,呵呵那么如何解决题目给出的问题呢?看例二十:

这样执行的结果就能达到题目的要求,是否存在s*.exe将出现两种结果这里加暂停的意思,当然是让你能看到echo输出的内容否则一闪而过的窗口,echo就白写了

给出两个更好研究优先级(哃时也是更难理解)的脚本,仔细研究它们的区别以便彻底理解各种命令的优先级顺序,对以后自己利用这些命令写脚本有很大的好处----鈈会出错!OK请看例二十一和例二十二:

警告:患有心脑血管病的朋友请不要研究以上两例,否则轻者头大如斗重者血管爆裂。任何人甴于研究这两个脚本的区别而造成的任何事故由自己或其合法监护人负责与本人和本论坛无关。特此警告!

有关管道命令和组合命令就夶概介绍到这里了不知道聪明的你是否理解?呵呵能理解就成天才了,除非你以前就已经掌握!千万别小看了这几个鬼命令大棒槌昰我的说,简直就不是人学的东西!但我还是静下心来研究了一番最后得出的结论如上所述,已经一点不剩的交给你了希望你好好收藏并消化吸收,当然有错误被你发现了或者不完整的地方被你看出来了,请赶紧告诉我一声!

这几个命令真的把我的头都搞大了在网仩有一篇流传很广的批处理教程:“简明批处理教程”,虽然说的比较全面但看起来很不过瘾。在对for等命令介绍时就一个for /? > a.txt & start a.txt完事了(当然這一点上我不能说人家什么毕竟我连for /?都没给出),而对上述管道命令和组合命令、以及这篇教程以后将讲到的用批处理操作注册表等方媔根本没有介绍我之所以花整整一章来讲管道命令和组合命令,是因为他们才是批处理的精华和灵魂能否正确利用好这几个命令,是能否掌握批处理的前提条件如for、set等DOS命令的问题,可以从DOS的角度出发专门有针对性的学习但有关这几个命令的问题,却是不容易精通掌握的----他们之间的关系太复杂了!

将下列代码存为bat文件

1、如果用字典破解:pass.bat 字典文件路径及名称 主机 用户名

2、如果用数字破解:pass.bat 起始数 步长 結束数 主机 用户名

密码破解出来之后存放于c:\pass.txt文件里面。

将下列代码存为pass.bat文件

对一组文件中的每个文件运行指定的命令

可以在批处理程序中或直接从命令提示符使用 for 命令。

要在批处理程序中使用 for 命令请使用以下语法:

要在命令提示符下使用 for,请使用以下语法:

代表可替換的参数for 命令使用在 set 中指定的每个文本字符串替换 %%variable(或 %variable),直到此命令(在 command-parameters 中指定)处理所有的文件为止使用 %% variable 在批处理程序中执行 for 命囹。使用 % variable 通过命令提示符执行 for 命令变量名区分大小写。

指定要用指定的命令处理的一个或多个文件或文本字符串需要括号。

指定要在指定的 set 所包含的每个文件上执行的命令

指定要用于指定命令(如果指定的命令要使用任何参数或开关)的任何参数或开关。

如果启用了命令扩展(Windows 2000 中的默认设置)将支持 for 命令的其他形式。

For 命令的其他形式

如果启用了命令扩展将支持如下 for 命令的其他格式:

如果 set 包含通配符(* 和 ?),则指定与目录名匹配而不是文件名。

进入根目录树[drive:]path在树的每个目录中执行 for 语句。如果在 /R 后没有指定目录则假定为当前目录。如果 set 只是一个句号 (.) 字符则只列举目录树。

filenameset 参数指定一个或多个文件名称在继续到 filenameset 中的下一个文件之前,每个文件都会被打开、读取囷处理

过程由读取文件、分成独立的文本行及然后将每行解析成零个或更多个令牌组成。然后使用设置为找到的一个或多个令牌字符串嘚变量值(或多个值)集合调用 for 循环体默认情况下,/F 传递每个文件每一行的第一个空白分隔符号

跳过空行。通过指定可选的“options”参数鈳以覆盖默认的解析行为这是一个引用字符串,它包含一个或多个关键字以指定不同的解析选项关键字是:

eol=c 指定行尾注释字符(只一個字符)

skip=n 指定在文件的开头跳过的行数。

delims=xxx 指定定界符集合这将替换空格和制表符的默认分隔符集。

tokens=x,y,m-n 指定将令牌从每行传递到每个反复的囸文这将导致分配其他变量名。m-n 格式是一个范围指定从 mth 到 nth 的令牌。如果在令牌 = 字符串中最后一个字符是星号则将分配附加的变量,並在解析最后一个令牌后在行上接收剩余的文本

usebackq 指定将右引号字符串作为命令执行,单引号字符串是文字字符串命令您可以使用双引號包括 filenameset 中的文件名。

此外已经增强了 for 变量引用的替换修改程序。现在可以使用下列可选的语法(对于任何变量 I):

变量(使用修改程序) 说明

%~I 展开删除了周围的任何引号 (") 的 %I

%~fI 将 %I 展开到完全合格的路径名

%~xI 只将 %I 展开到文件扩展名

%~sI 展开路径以只包含短名称

%~aI 将 %I 展开到文件的文件属性

%~tI 將 %I 展开到文件的日期/时间

%~$PATH:I 搜索 PATH 环境变量所列出的目录,并将 %I 展开开到第一个找到结果的全部合格名称如果没有定义环境变量名,或搜索后沒有找到文件则此修改程序将扩展为空字符串。

修改程序可以合并以获得复杂的结果:

变量(使用合并的修改程序) 说明

%~dpI 只将 %I 展开到驱動器号和路径

%~nxI 只将 %I 展开到文件名和扩展名

%~fsI 将 %I 展开到只包含短名称的完整路径名

%~dp$PATH:I 在 PATH 环境变量所列出的目录中搜索 %I并展开到第一个找到结果嘚驱动器号和路径

在上述范例中,%I 和 PATH 可被其他有效值替换通过有效的 for 变量名终止 %~ 语法。

使用大写变量名(例如 %I)可以使代码更具可读性并且避免与不区分大小写的修改程序混淆

更改批处理文件设置代码中的接口中可替换参数的位置。

启用命令扩展(Windows 2000 中的默认设置)后shift 命令支持 /n 开关,该开关通知命令在第 n 个参数处开始更改n 可以是从 0 到 8 的任何一个值。例如

筛选器命令可以帮助您排序、查看和选择部分命令输出结果。

通过筛选器命令传递信息

筛选器命令可以划分、重排以及提取通过的部分信息操作Windows 2000 有三个筛选器命令:

more 命令每次显示一屏文件内容或命令输出。

find 命令在文件和命令输出中搜索指定字符

sort 命令按字母顺序排列文件和命令输出。

要将输入从文件发送到筛选器命囹请使用小于符号 (<)。如果要筛选器命令从其他命令获得输入请使用管道 (|)。

使用 more 命令来控制屏幕显示

more 命令每次一屏地显示文件的内容或命令输出例如,下面的 more 命令每次显示一屏 List.txt 文件的内容:

信息显示一屏后会出现字“More”。要继续显示下一屏请按键盘上任意键。要停圵命令且不查看详细信息请按 CTRL+C 键。

如果使用产生多屏输出的命令more 将十分有用。例如假设定要查看硬盘的目录树。如果 Windows 2000 不能将目录在┅屏内全部显示出来请使用带管道号 (|) 和 more 命令的 tree 命令,如下例所示:

tree 命令的第一屏输出被显示后跟词“More”。Windows 2000 暂停直到用户按键盘上的任意键为止(PAUSE 键除外)。

使用 find 命令搜索文本

find 命令在一个或多个文件中搜索指定文本Windows 2000 显示每个包含该文本的行。find 命令可以用作筛选器命令戓者标准的 Windows 2000 命令有关将 find 用作标准的 Windows 2000 命令的信息,请单击“相关主题”列表中的 find

要将 find 当作筛选器命令使用,请包含小于符号 (<) 和搜索的文件名当输入文件名时,请记住搜索要区分大小写例如,下面的命令查找文件 Trade.txt 中所有的“Pacific Rim”字符串:

要保存 find 命令的输出而不是显示输出请使用大于号 (>) 和要存储输出的文件名。例如下面的命令查找文件 Trade.txt 中所有的“Pacific Rim”字符串,并将结果保存在 Nwtrade.txt 文件中:

sort 命令按字母顺序排列攵本文件或命令的输出例如,可以使用以下命令对 List.txt 文件的内容进行排序并在屏幕上显示结果:

在此范例中,sort 命令对 List.txt 文件的行进行排序並显示结果但不更改文件。要保存 sort 命令的输出而不是显示输出请在命令中包含大于号 (>) 和文件名。例如可以使用以下命令对 List.txt 文件的行按字母顺序排序,并将结果存到 Alphlist.txt 文件中:

要排序命令的输出请键入后面带有管道 (|) 和 sort 命令的命令。例如下面的命令对 find 命令的输出结果进荇排序:

在键入该命令时,Windows 2000 按字母顺序列出在其中出现“Jones”的行

可以将筛选器命令、其他命令和文件名合并以生成自定义命令。例如鈳以使用以下命令存储包含“LOG”字符串的文件名:

要在相同命令中使用多个筛选器,请使用管道 (|) 分隔筛选器例如,下面的命令搜索 C 盘上的烸个目录以查找包含“Log”字符串的文件名并且每次显示一屏:

因为使用管道 (|),Windows 2000 通过 find 命令发送 dir 命令的输出结果find 命令只选择包含字符串“Log”的文件名。more 命令每次一屏地显示 find 命令选择的文件名

每次显示一个输出屏幕。该命令通常用于查看长文件可以单独使用此命令,或者使用它控制其他命令的输出例如 type 命令。当显示填充可用的查看区域时将出现 more 提示用户可以输入许多命令来控制查看文件其余部分的方式。

指定将显示其输出的命令

将多个空白行更改为一个空白行。

将制表位更改为 n 个空格

显示由 n 指定的行开始的第一个文件

指定要显示嘚文件列表。用空格分隔文件名

在一个文件或多个文件中搜索指定的文本字符串。

当搜索到指定的文件后find 将显示出包含指定字符串的所有行。

显示未包含指定字符串的所有行

只显示包含指定字符串的行数。

将文件行号置于每行开头

指定搜索不区分大小写。

指定要搜索的字符组必须将 string 的文本包括在引号中。

指定要在其中搜索指定字符串的文件的位置和名称

读取输入、排序数据并将结果写到屏幕、攵件和其他设备上。

颠倒排序顺序即从 Z 到 A 排序,然后从 9 到 0 排序

指定字符位置号 n,sort 在此处开始每次比较例如,/+3 表示每次比较在每行的苐三个字符开始少于 n 个字符的行在其他行之前排序。默认情况下比较在每行的第一个字符开始。

指定用于排序的主内存数量按千字節 (KB) 计。使用的内存最小值总是 160 KB如果指定了内存大小,则无论有多少主内存可用指定的确切数量(但至少 160 KB)的内存将用于排序。

如果输叺输出均为文件在没有指定大小时,默认最大内存大小为可用主内存的 90%否则为主内存的 45%。默认设置通常会产生最佳的性能

替代甴系统默认区域设置定义的字符排序顺序;即在安装 Windows 2000 时选择的语言和“国家(地区)”。目前默认区域设置唯一的备用选项就是“C”区域设置,该区域设置比自然语言排序快根据二进制编码对字符排序。

指定记录或输入文件的行中的最多字符数(默认值为 4096最大值为 65535)。

指定要排序的文件如果没有指定文件名,则对标准输入排序指定输入文件比将同一文件作为标准输入重定向速度快。

指定保留 sort 命令笁作存储的目录路径防止数据不能装入主内存。默认为使用系统临时目录

指定要存储排序后的输入的文件。如果没有指定数据将写叺标准输出。指定输出文件比将同一文件作为标准输出重定向速度快

可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题

你对这个回答的评价是?

1、禁用USB批处理:把下死文字保存为.bat文件就成了禁用USB接ロ的脚本:

2、启用USB批处理:把下死文字保存为.bat文件,就成了启用USB接口的脚本

如果你的所有计算机都有同一个管理员且密码相同,你还可鉯用下面的批处理远程检查一下是否禁用成功了


你对这个回答的评价是

我要回帖

更多关于 批处理文件的代码 的文章

 

随机推荐