频道栏目
读书频道 > 安全 > 矛与盾——黑客攻防命令大曝光
3.2.2 批处理中的常用命令
2013-08-09 11:41:24     我来说两句
收藏   我要投稿
本书紧紧围绕黑客命令与实际应用展开,在剖析黑客入侵中用户迫切需要用到或迫切想要用到的命令时,力求对其进行傻瓜式的讲解,使读者对网络入侵防御技术形成系统的了解,能够更好地防范黑客的攻击。全书共分为11...  立即去当当网订购

批处理文件常用的有@、Echo、Call、Goto、If、Choice、Pause、For和Shift等命令,下面将分别介绍这些命令。

1.@

@符号是E-mail的必备符号,作用是让执行窗口中不显示它后面这一行的命令本身。即行首有了它,这一行的命令就不显示了。@命令使用很简单,只需把它放在一行命令的最前面就可以了。

2.echo

echo的中文意思为“反馈”或“回显”。它其实是一个开关命令,也就是说它只有两种状态:打开和关闭。于是就有了echo on和echo off两个命令。直接执行echo命令将显示当前echo命令状态(off或on),执行echo off将关闭回显,它后面的所有命令都不显示命令本身,只显示执行后的结果,除非执行echo on命令。

3.::

::是一个注释命令,在批处理脚本中和rem命令等效。它后面的内容在执行时不显示,也不起任何作用,因为它只是注释,只是增加了脚本的可读性,和C语言中的/*……*/类似。

4.Pause

Pause的中文意思为“暂停”,作用是让当前程序进程暂停一下,并显示一行提示信息:“请按任意键继续......”。

5.:和goto

goto是一个跳转命令,:是一个标签。当程序运行到goto时,将自动跳转到:定义的部分去执行。goto命令也经常和if命令结合使用。goto命令还可用于提前结束程序。在程序中间使用goto命令跳转到某一标签,而这一标签的内容却定义为退出。

6.%

百分号严格来说是算不上命令的,它只是批处理中的参数而已,但千万别小看了它,少了它批处理的功能就大大减少了。
net use \\%1\ipc$ %3 /u:"%2"
copy 11.BAT \\%1\admin$\system32 /y
copy 13.BAT \\%1\admin$\system32 /y
copy ipc2.BAT \\%1\admin$\system32 /y
copy NWZI.EXE \\%1\admin$\system32 /y
attrib \\%1\admin$\system32\10.bat -r -h -s

上述代码是Bat.Worm.Muma病毒中的一部分,%1代表的IP,2%代表的username,3%代表password。执行形式为:脚本文件名 参数1 参数2。假设这个脚本被保存为a.bat,则执行形式为a IP username password。这里IP、username和password是3个参数,缺一不可(因为程序不能正确运行,并不是因为少了参数语法就不对)。在脚本执行过程中,脚本就自动用3个参数依次代替1%、2%和3%,这样,就达到了灵活运用的目的。

7.if

if命令是一个表示判断的命令,根据得出的每一个结果,它都可以对应一个相应的操作。

(1)输入判断。
if "%1"=="" goto usage
if "%1"=="/?" goto usage
if "%1"=="help" goto usage

上述代码是判断输入的参数情况,如果参数为空(无参数),则跳转到usage;如果参数为/?或help,也跳转到usage。还可以用否定形式来表示“不等于”,例如,if not "%1"=="" goto Usage,则表示如果输入参数不为空就跳转到usage。

(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文件。这种用法是先判断前一个命令执行后的返回码,如果和定义的错误码符合(这里定义的错误码为1),则执行相应的操作(这里相应的操作为pause & edit %1.asm部分)。 另外,这种用法也可以表示否定。

用否定形式仍表达上面3句的意思,代码变为以下语句。
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,值得考虑,一旦搭配不成功,脚本就肯定出错。这种用errorlevel结果判断的用法是if命令最难的用法,但如果不会用errorlevel来判断返回码,则要达到相同的效果,必须用else来表示“否则”的操作。以上代码必须变成以下语句。
masm %1.asm
if exist %1.obj link %1.obj
else pause & edit %1.asm

关于if命令的这3种用法理解起来很简单,但应用时不一定用得那么得心应手,主要是熟练程度的问题。

8.call

在批处理脚本中,call命令用来从一个批处理脚本中调用另一个批处理脚本。

来看下面的实例(默认的3个脚本文件名分别为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

从上述3个脚本可以得到信息:脚本调用可以灵活运用、循环运用和重复运用。脚本调用可以使用参数。

在start.bat中,10.bat后面跟了参数0,执行时的效果其实就是把10.bat中的参数%1用0代替。在start.bat中,ipc.bat后面跟了参数ipcfind.txt(一个文件,也可以做参数),执行时的效果就是用ipc.bat中每一行的3个变量,对应代换ipc.bat中的%%i、%%j和%%k。这里参数调用是非常灵活的,使用时需要好好体会。

9.find

find是一个搜索命令,用来在文件中搜索特定字符串,通常也作为条件判断的铺垫程序。这个命令单独使用的情况在批处理中比较少见,没有什么实际意义。

10.REM

REM命令的作用是在批处理文件Autoexec.bat或系统配置文件Config.sys中注入注释,当执行时将注释信息显示在屏幕上,可用于增加文件可读性,但不会被执行。REM命令可以用 ::来代替。另外,REM命令还可以用于屏蔽命令。

注意

REM命令不会在屏幕上显示注释,如果在屏幕上显示注释,则必须在批处理文件或系统配置文件中使用ECHO ON命令。在批处理文件中不能使用重定向符(如<和>),也不能使用管道字符|。

11.SHIFT

SHIFT命令的作用是更改批处理文件中批处理参数的位置。SHIFT命令通过将每个参数复制到前一个参数,来改变可替换参数%0~%9的值,就是%1的值被复制到%0、%2的值被复制到%1等。该命令对用一系列参数完成同样操作的批处理文件很有用。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.2.1 批处理命令实例
下一篇:3.2.3 常用的管道命令
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站