如何编写bat文件第一节:(主要是一些界面形式功能的实现以及初始化)1.“@echo off”--我们所写的BAT一开始一般都有这一句,这一句的作用是:使所有的命令响应隐藏。
“@”--本行命令不回显。
(本来如果你用echo off就可以了,但是还是能够看到echo off这条命令在CMD下,影响美观)2.“color 1e”--设置默认的控制台前景和背景颜色。
当前我设为蓝底黄字,具体颜色请在CMD下用“color /?”查询。
--这里又提到了这个参数“/?”,一般CMD下命令后加“/?”就会显示这条命令的帮助。
3.“rem”--注释作用,批处理执行过程中前不执行它,rem 后的字符只作注释作用。
4.“title”--设置命令提示窗口的窗口标题。
默认为“cmd”。
改成自己喜欢的多有个性,嘿嘿。
5.“cls”--不多说,清屏命令。
主要是怕前面的一些空白或字符出现影响美观。
6.“set”--这个命令的作用很大,请用“set /?”查询具体使用方法。
本例“settopip=172.16.”是将一个名为“topip”的变量值设为“172.16.”。
注意CMD下变量的设置不区别数字与字符,能够自动根据提供的值调整。
下行“settheip=0.0”同理。
7.“echo .”--在新行中显示一个“.”。
echo命令能显示其后的comment。
这里提几个有趣实用的用法--“echo.”,注意与前面的不同,“echo”与“.”间无空格。
这条命令如同一个回车,在新行不显示任何信息并换行。
“echo ”,实现响铃的提示音。
后面一个字符的输入方法是在CMD下用“ctrl+G”,而这个字符得到的方法是CMD下用命令“echo "ctrl+G" >ex.txt”,存入ex.txt文件,再从那里提取出来的。
嘿嘿,如果你懒得做,就copy我在上面提供的字符喽。
8.“if”--这条命令也会经常用到,请用“if /?”学习更多信息。
本例“if not exist scanipc.exe (echo 文件错误!……)”,实现功能:当同级目录下不存在“scanipc.exe”时,提示“文件错误!……”。
否则不提示。
“if not exist filename”在批处理中使用比较多些。
9.“:top”,设置一个标志点,标志名为“top”。
“:”的作用就是设置标志。
网上有文章说“使用"::comment"作为注释比"rem comment"执行效率更高。
”我相信,这里也建议大家,如果BAT中注释较多时,请使用“::comment”设置。
10.“set /p pno=”--设置一个变量,并接受用户输入。
BAT不需要预先声明变量,只在需要时设置。
参数“/p”:将变量数值设成用户输入的一行输入。
11.“if %pno% gtr 9 gotoonerrorspno”--检验用户输入值是否大于9,是,则转到一个指定标志点。
这里注意BAT中变量引用时要在前后加“%”,但在if语句中可有可无,具体应用大家多写几遍就有体会。
12.“goto label”--无条件跳转到指定标志位并向后执行。
BAT好像只有这么一个跳转语句了,作用不用我说,用了就知道。
注意不要构成死循环。
小结:到此,完成了颜色设置、注释版权说明、标题设置、变量初始化、欢迎信息、功能界面初始化、标志点设置(因为欢迎信息只显示一次而功能界面要多次使用所以将标志点设置在欢迎信息的后面。
)命令的接受与跳转。
;功能界面一般要用“tab”键调整相对位置,才能起到美观的效果。
请多练习几遍领会。
;大家在写脚本过程中要注意标志点的设置位置,才能起到合适的效果。
一般写过几个脚本会有些感受。
;接着接受用户输入后“cls”清屏开始执行指定功能。
注意这个cls的作用。
因为清屏可以在此时,也可以在每个命令执行之前,但如果在每个命令执行之前用的请,那么要写的cls就多了,于是把cls写在这里合适,方便节约快捷。
大家在写脚本时也应当注意这方面的技巧,将使你写出更加高效节约方便的代码。
在每次写完脚本后合理地整合一下自己的代码。
能积累不少经验。
;另外,鉴于部分人仍不知道如何建立BAT文件与运行,请:打开记事本,写入代码,保存,保存类型为“所有文件*.*”,文件名为“name*.BAT”。
保存后,双击运行。
因为一般BAT运行很快,所以你可能只看到窗口一闪就消失了,那么你可以在exit之前加pause确保能看见运行结果。
到此,你应该能够写一个很简单的脚本了,实现一些界面控制。
例1:@echo offcolor catitle 这是我第一个BAT脚本。
echo这是我第一个BAT脚本。
不错啊。
pause>nulexit第二节:(提一些好用的命令)以下设置的都是功能段,在“gotostep%pno%”跳转到相应功能段后,开始执行相应功能。
一般命令段:step1:ping命令。
(在echo中变量的引用请注意前后加“%”号,否则会导致程序出错。
)我们常用的ping命令:其实很简单,自己看帮助啦。
本句“ping %topip%%theip% -n 1 |findstr 100%>nul”将ping 只发送一次数据包,这样命令执行起来就快多了,但这样所会引起一定概率的误判,而我们在内网这种概率很低,低到可以忽略。
所以本人使用参数“-n 1”减少执行时间。
将结果不回显而通过管道命令“|”送给findstr分析,findstr查找是否存在“100%”,并将回显“丢弃”--“>nul”。
因为如果ping一台主机如果返回的结果有“100%”存在说明“不在线。
或者有防火墙阻挡。
”。
所以用findstr确定字符串“100%”的存在性,因为findstr也有回显,但我们并不需要,所以将它“丢弃”,使用参数“>nul”将指定命令回显丢弃。
(这一句命令是重点,请仔细领会。
)又因为findstr确定指定字符串的存在性后会设定环境变量“errorlevel”的值,所以我们根据“if %errorlevel% equ 0(command)”,判断findstr的执行结果就行了,也就不需要有回显。
“errorlevel”作用很大,一般命令行下的命令执行后都有一个特别的errorlevel,我们就可以根据相应的“返回值”作出相应判断并执行相应功能。
findstr如果找到指定字符串,则有errorlevel=0,说明:IP不在线。
那么既然不在线,我们就没有向下执行的必要了,直接跳回top界面功能接受下一次指令。
如果IP有不同回应,说明在线,则开始检测共享。
“net view \\%topip%%theip%\”--查看指定IP的共享清单。
net详细命令请自行查阅。
列出共享清单后返回功能界面。
step2:打开共享一。
“explorer \\%topip%%theip%\”,用资源管理器打开指定的IP根。
注意语法,其它也没有什么。
step3:IPC$空连接。
“net use \\%topip%%theip%\ipc$ "" /user:"administrator"”,一个很老的漏洞,但也许内网还有机子存在哩,嘿嘿,语法就是这样。
step4:一般信息。
“ipconfig /all”--用于得到本机的IP与MAC等信息,很好用的命令。
语法如示。
“nbtstat -na %topip%%theip%”--用于得到他方机子的一些信息,语法如示。
另请自查帮助。
step5:Scanipc。
用命令行打开了一个程序而已。
在命令行下执行其它命令也就是这样啦。
step6:返回时间。
“net time \\%topip%%theip%”--探测指定机子时间,语法如示。
step7:远程连接。
“net use \\%topip%%theip%\admin$ "" /user:"administrator"”,嘿嘿,administrator空密码连接。
最简单的入侵啦,嘿嘿嘿。
语法如示。
step8:本机信息。
跳到另一个功能界面执行相应功能。
step9:高级命令。
跳到另一个功能界面执行相应功能。
step0:退出程序。
一个exit退出脚本。
“exit”,退出CMD。
onerrorsip:实现错误提示,并重新执行step1。
onerrorspno:实现错误提示,并重新跳转到功能界面。
高级命令段:引用前面已给定的IP,并对其进行一些高级操作。
重新绘制功能界面。
首先,注意在一个BAT文件中,不允许出现有标志名的重复。
step11:条件连接。
设定两个变量,分别为用户名与密码。
注意到有一个默认的功能。
实现原理是,当接受到用户输入为空时(即一个回车),变量将保持不变。
条件连接语法如示。
比前面远程空密码连接更高级一点,嘿嘿。
step12:打开共享。
打开已经连接成功的对方计算机的指定盘。
打开指定盘语法如示。
step13:发送消息。
向对方发送消息。
要求双方的messager服务开启,否则无法发送成功。
发送消息语法如示。
step14:远程关机。
设置关机时间与关机理由,用shutdown程序关闭对方计算机,嘿嘿,恶作剧。
要求你连接成功,并有shutdown程序支持。
shutdown语法自查帮助。
step15:溢出CMD。
嘿嘿,溢出到对方的CMD下,算是一个真正的入侵了。
当然需要用户名与密码喽。
要求用户名与密码正确并对方默认支持远程管理。
并有psexec程序支持。
psexec语法如示,并请自查帮助。
step16:结束进程。
嘿嘿,不说也知道,结束对方已知进程。
要求连接成功并有pskill程序支持。
恶作剧类,有恶意成分。
嘿嘿。
小心使用。
step17:ipc$连接。
同step3.step18:断开连接。
断开与对方的连接,就是擦屁股啦,以免让对方有所察觉。
这个好习惯要养成。
语法如示。
step19:一般命令。
返回前面一个功能界面。
step20:结束程序。
退出。
step110:AT命令,令对方在指定时间运行指定命令。
有点像木马,嘿嘿。
要求连接成功。
因为节约变量,所以引用了前面的暂不使用的变量。
好习惯。
哈哈。
step111:telnet。
远程telnet。
不要说你一点都不知道,语法如示并请自查帮助。
step112:更改主IP。
主要是为了使我们的使用方便,对某个特定IP段探测能够简化输入。
如主IP改成“172.16.130.”,那么专门对130探测,而且输入IP时只需输入最后位,嘿嘿,多方便啊。
step113:任意命令。
主要是接受用户输入并执行用户的输入罢了,结构如示。
本机信息段:主要是对本机信息的一些查询语法。
stepm1:ipconfig,不说了。