正文

讲课内容:批处理2006-11-27 20:16:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/zean/20942.html

分享到:

  授课时间:2005年12月4日 批处理:批处理有也有些人称为批处理脚本,也有说成为批处理程序的。英文是batch 。我们现在的批处理文件后缀就是取其单词的前三个字母 *.bat,或者 *.cmd 。 一行可视为一个命令。每行命令里可以以包含多条子命令。从第一行开始到最后一行结束。(整体是这样的,如果中间加如如if ;for之类的循环  条件之类的除外)。基于批处理的平台是DOS系统。全名是磁盘操作系统disk operation system 。不过批处理(DOS命令)在入侵过程中用处还是很多的,DOS系统有一个好处: 速度快,不留痕迹。而且用多了会觉得比WIN下面的鼠标点的要爽。   现在进入批处理的正题。 .bat跟.cmd后缀运行的效果都是一样的.两种不同的后缀而已. 命令行在XP (NT之上的都是叫cmd调出.在win98类的系统都是以command调出. 现在谈下关系批处理的功能. 在入侵中,在实际操作中都有非常重要的作用. 先说下在入侵中...相信大家都见过这么一句代码:net use \ip\ipc$ "password" /u:"administrator"。如果把他转化成批量管理,或者破解的话,用批处理命令来解决怎么办? 下面我们将讲到这个. 还有实际应用中,比如说网吧的应用系统。自动备份功能,用批处理来解决的话也会更方便。 好了,功能及应用就说到这里,我们开始讲关于批处理的命令如何写。 一echo 命令 可以说这是一句回显开关命令. 大家可以在自己的CMD下试试 echo /? 帮助文件是如何的 。我想问,如果知道用户名和密码,用批处理能编个开IPC$的软件吗?(在本机上运行的)。你再输入echo off ,就关闭了回显了. 这个命令基本上只是显示后面的提示而建立的,比如你输入一个命令行  @echo Just me is a good guy 。屏幕就会显示Just me is a good guy。这条命令基本上的功能就是这样.      二   .@命令. 这条命令的作用于是不显示@后面的命令. 例如:书上的例子:@echo Now initializing the program,please wait a minite... 。如果你输入 @format x:/q/u/autoset 这个作用就大了{格式化}。大家注意后面的autoset。以前在98之前的时候都用/y来试用的。现在NT以后禁了Y参数,不过这个autoset是可以了.效果一样. @format X: /q/u/autoset   这句命令的作用主要告诉大家的是,如果在别人的屏幕上不显示正在快速格式化他他的硬盘. 如果在前面再加上一句  @echo please wait a minite... 。再说一些诱域性的话,也就没人怀疑你在做坏事了. 这条命令基本上就是这样了.      三 goto 这条命令跟C语言里的Goto好像差不多. 你新建一个文本文档。再把这个新建文本文档的后缀.txt改成.bat。如果想要编辑你的这个批处理的话就右键单击,编辑. 好了.我们继续讲Goto命令. 看过C基础的一定知道书上有个例子是 .... :loop .... go to loop; 很简单的一个命令,意思就是跳动到哪句去执行的意思. 这个loop是标签的意思.前面一定要加上 " : "号 。也就是两个点。这条语句的基本作用就是这样了,例子在后面举出来. 四rem语言句. rem命令。这个相对来说就比较简单了,意思就是注释性的.相当于C里面的\\ /* ....*/ 。ASP文件里面的  -...-意思就是注释的意思。不起任何执行命令的作用不着. 不起任何执行命令的作用。@rem i'm a great man 。嘿嘿.牛B下. :P [此贴子已经被封____了于2005-12-4 22:36:19编辑过]叫我宝宝就可以了!2005-12-4 22:18:02举报帖子     宝汽X 等级:新手上路文章:19积分:219门派:无门无派注册:2005年11月26日第 2 楼     --------------------------------------------------------------------------------五.pause命令   这条命令的作用就比较大了.也比较好懂.   @echo off   :begin   copy a:*.* d:\back   echo Please put a new disk into driver A   pause   goto begin    这个批处理文件就含比较多的内容了. 好了.我来讲下这条命令. @echo off是关闭回显的意思   begin 在这里是做标签的意思.   echo Please put a new disk into driver A 。这条语句是显示Please put a new disk into driver A   pause命令是等待用户键入任意建   goto begin 重新开始一次. 就是输入任意建以后再跳转到begin copy a:*.* d:\back    这个批处理的作用是一张一张的复制软盘.   Pause命令本身就是这个提示.不用你去写一条显示类似的语句. 你输入pause就会显示,请键入任意键继续。如果是英文操作系统会出现; prest any key to continue   再讲批处理的一个特性:   批处理调用内部或者外部命令之后就不再去管他了,不管他是不是在进行.也不管他是否进行结束。如果你复制一张软盘的话就得自己把握时间. 如果你再用这条命令的话,他会继续copy这张软盘 。   六.call 命令   从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。父批处理程序就是指写有call命令的批处理程序。这条语言要求自身理解的. 多看别人写的批处理程序也基本上可以明白.   七.start命令   调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。关于这条命令的解释有一条重要的规则:执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。   如果你直接在命令提示框里面输入start会再弹出一个同样的窗口 。也就是说默认调用的是DOS窗口 。所以...你为了在某个文件夹里面调用cmd. 可以建bat文件里面写入cmd也可以写入start都是一个效果.   八.choice 命令     这条命令如果单独写在cmd里面是不行的.    这条命令的简介: 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……   choice /c:dme defrag,mem,end  。大家看下这条命令的效果 {注:choice在NT里面已经不支持了. }98的操作系统.或者磁盘操作系统.可以在百度或者哪里找choice的资料. 开始讲比较严肃的东西了.这两条命令比较重要   九.If 命令    if 条件 待执行的命令   if =={%1} goto noparms    goto 批处理文件运行到这里将跳到goto 所指定的标号处, 一般与if配合使用。    noparms只是一个标签.   这三个好好看到.多看几遍   if goto choice for 是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。   if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:   1、if "参数" == "字符串"  待执行的命令   参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)   如if "%1"=="a" format a:   2、if exist 文件名  待执行的命令   如果有指定的文件,则条件成立,运行命令,否则运行下一句。如if exist config.sys edit config.sys   3、if errorlevel 数字  待执行的命令   如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。如if errorlevel 2 goto x2  DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码   再说下标号 ":"    标号用 :字符串 表示,标号所在行不被执行   十.for命令   for  命令比较复杂.使用起来只能多看,多练,多分析才能懂里面的东西。 基本格式: FOR [%%f] in (集合) DO [命令]    跟C不一样     %%f 就是 设置 意思.这里的设置范围是有限度的。这个范围就是里面的集合里面   如果一条批处理文件中有一行:   for %%c in (*.bat *.txt) do type %%c    tpye就是DOS命令,是显示文件内容的意思   *下面for 的官方帮助.* 转第三部分 叫我宝宝就可以了!2005-12-4 22:27:13举报帖子     宝汽X 等级:新手上路文章:19积分:219门派:无门无派注册:2005年11月26日第 3 楼     --------------------------------------------------------------------------------接第二部分 for 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 命令时,指定变量使用 %%variable   再继续讲一些 for的实例用法   利用FOR暴力破解一台NT的机器.   如果猜中他的管理员帐号是administrator   我的IPC连接命令   net use \\ip\ipc$ ""/user:""   只要小小的改动几条命令   for /f i% in (welldo.txt) do net use \ip\ipc$ "i%" /u:"administrator"   然后在这个welldo.txt文件里面列举可能有产生的密码     完 叫我宝宝就可以了!2005-12-4 22:27:49举报帖子     宝汽X 等级:新手上路文章:19积分:219门派:无门无派注册:2005年11月26日第 4 楼     --------------------------------------------------------------------------------在多次调用start命令后,会产生几个文件,请问怎么修改这急个文件的存放位置啊!{注:我调用的是私服启动文件} 叫我宝宝就可以了!2005-12-5 16:18:08举报帖子     Vikas 等级:新手上路文章:4积分:55门派:无门无派注册:2005年10月9日第 5 楼     --------------------------------------------------------------------------------看看我的系统更新的BAT: @ECHO OFFCLS prompt [webmaster@endsec.com]☆☆title 登哥专用版color 07@echo onPAUSEstart F:\DESK\系统更新包\Upgrade17.55.40.exestart F:\DESK\系统更新包\tt2.21.execall F:\DESK\系统更新包\fav2c.batstart C:\163.lnkCopy F:\Sec\个性化\声音\Windows XP 关机.wav C:\WINDOWS\Media\Windows XP 关机.wavCopy F:\Sec\个性化\声音\Windows XP 启动.wav C:\WINDOWS\Media\Windows XP 启动.wav

阅读(1937) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册