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