BAT脚本入门一、概述

首先解决第一个问题,哪些是BAT脚本?

二、BAT脚本常用指令解析

echo命令

功能:打开回显或关掉恳求回显功能,或显示消息

句型:echo[{on|off}][message]

echoon表示在此句子后所有运行的命令都显示命令行本身

echooff表示在此句子后所有运行的命令都不显示命令行本身

此两句的作用就是,我们可以选择是否将命令复印到终端里面。

@与echooff相似,但它是加在每位命令行的最上面,表示运行时不显示这一行的命令行(只能影响当前行)。

@命令

功能:表示不显示@旁边的命令

句型:@{命令}

好多黑客程序在入侵过程中,(比如使用批处理来低格敌方的硬碟)自然不能让对方听到你使用的命令啦。

example:

@echo off
echo hello world

如此,整个BAT脚本的命令不会在终端显示,但是会在终端打印 "hello world"

rem命令和::命令

功能:表示此命令后的字符为注释,不执行。

句型:置于你想要的注释的命令开头即可

这两条条指令类似于C语言中的注释符”//”,留给自己和他灵芝考使用,写注释等。

example:

@rem there is a warning!!
::there is a warning!!

pause指令

功能:使程序挂起而且输出”Pressanykeytocontinue…”/假如才中问环境下会提示“请按任意键继续…”

句型:单独使用,置于你想要使程序挂起的地方

example:

@echo off
:begin
echo I am a iron man
pause
goto begin

这个反例使用到了类似于C语言中的goto句子的规则。假如你了解该句子可以看出这个脚本是一个死循环,像不像木马程序?

goto命令

功能:跳转到指定标签,找到标签后程序将从下一行开始执行指令。

句型:goto{label}(label是参数linux命令大全,指定所要跳转的位置),通常标签前会加”:”表示该字母是一个标签,如“:lable”。

这儿不给出反例了,可以参考上一个反例。

call命令

功能:在一个批处理程序中调用另一个批处理程序,但是不中止父批处理程序。call命令接收用作调用目标的标签。假如在脚本或批处理文件外使用Call,它将不会在命令行起作用。

句型:call[Drive:][Path]FileName[BatchParameters][:label[arguments]

[Drive:][Path]FileName:指定要调用的批处理程序的位置和名称。filename参数必须具有.bat或.cmd扩充名,即只能调用批处理程序。

start命令

功能:调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用

句型:start[Path]FileName

如:startC:usertest.exe

后面提及call命令只能调用另一个BAT脚本程序,而start则可以调用任何可执行程序。

choice命令

ug消除参数命令_bat 命令 参数_cs1.6鼠标参数命令

功能:choice使用此命令可以让用户输入一个字符,因而运行不同的命令。使用时应当加/c:参数,c:后应写提示可输入的字符,两者之间无空格。它的返回码为1234……

句型:choice/lable:abc[tag1],[tag2],[tag3]

choice命令为DOS或则Windows系统提供的外部命令,不同版本的choice命令句型会稍有不同,请用choice/?查看用法

参数列表:

/Cchoices指定要创建的选项列表。默认列表是“YN”。

/N在提示符中隐藏选项列表。提示上面的消息得到显示,

选项仍然处于启用状态。

/CS容许选择分大小写的选项。在默认情况下,这个工具

是不分大小写的。

/Ttimeout作出默认选择之前bat 命令 参数,暂停的秒数。可接受的值是从0

到9999。假如指定了0,就不会有暂停,默认选项

会得到选择。

/Dchoice在nnnn秒以后指定默认选项。字符必须在用/C选

项指定的一组选择中;同时,必须用/T指定nnnn。

/Mtext指定提示之前要显示的消息。假如没有指定,工具只

显示提示。

/?显示帮助消息。

注意:

ERRORLEVEL环境变量被设置为从选择集选择的键索引。列举的第一个选择返回1,第二个选择返回2,等等。假如用户按的键不是有效的选择,该工具会发出警告声响。假如该工具检查到错误状态,它会返回255的ERRORLEVEL值。假如用户按Ctrl+Break或Ctrl+C键,该工具会返回0的ERRORLEVEL值。在一个批程序中使用ERRORLEVEL参数时,将参数倒序排列。

example:

@echo off 
choice /C dme /M "defrag,mem,end"
if errorlevel 3 goto end
if errorlevel 2 goto mem 
if errotlevel 1 goto defrag:defrag 
c:dosdefrag 
goto end:mem 
mem 
goto end:end 
echo good bye

cs1.6鼠标参数命令_bat 命令 参数_ug消除参数命令

此批处理运行后,将显示“defrag,mem,end[D,M,E]?”,用户可选择dme,之后if句子按照用户的选择做出判定,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每位程序段最后都以gotoend将程序跳到end标号处,之后程序将显示goodbye,批处理运行结束。

if命令

功能:表示将判定是否符合规定的条件,因而决定执行不同的命令

句型:其句型有以下三种方式

if“参数”==“字符串”待执行的命令

参数假如等于(not表示不等,下同)指定的字符串,则条件创立,运行命令,否则运行下一句。

例:if“%1”==“a”formata:

if[not]exist[路径]文件名待执行的命令

假如有指定的文件,则条件创立,运行命令,否则运行下一句。

如:ifexistc:config.systypec:config.sys

表示假如存在c:config.sys文件,则显示它的内容。此处type指令用于显示指定文件的内容。

iferrorlevel待执行的命令

好多DOS程序在运行结束后会返回一个数字值拿来表示程序运行的结果(或则状态),通过iferrorlevel命令可以判定程序的返回值,依据不同的返回值来决定执行不同的命令(返回值必须根据从大到小的次序排列)。假如返回值等于指定的数字,则条件创立,运行命令,否则运行下一句。

如iferrorlevel2gotox2

虽然这个更像一个出错处理机制,我们应在自己编撰BAT脚本中多多使用这一方式。

常和if搭配的几个运算符:

EQU-等于

NEQ-不等于

LSS-大于

LEQ-大于或等于

GTR-小于

ug消除参数命令_cs1.6鼠标参数命令_bat 命令 参数

GEQ-小于或等于

for命令

功能:for命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。

句型:FOR(%%variable|%variable)IN(set)DOcommand[command-parameters]

%variable指定一个单一字母可替换的参数,指定变量请用%%variable。

(set)指定一个或一组文件。可以使用转义。

command指定对每位文件执行的命令。

command-parameters为特定命令指定参数或命令行开关。

比如一个批处理文件中有一行:

for%%cin(*.bat*.txt)dotype%%c

则该命令行会显示当前目录下所有以bat和txt为扩充名的文件的内容。

set命令

句型:set[varible=[string]]

功能:显示、设置或删掉环境变量

example:

set VAR=before
if "%VAR"=="before"(set VAR==afterif "!VAR"=="after"@echo if you see this it work
)

通过前面常用的10来个指令的介绍,我们在看大部份的BAT脚本的时侯早已没有啥太大的压力了。并且要想更好的把握BAT脚本,还有以下几点补充:

三、BAT批处理文件参数

@echo off
type %1

 @echo offtype ormat %2

四、使用组合命令

cs1.6鼠标参数命令_ug消除参数命令_bat 命令 参数

用法:第一条命令&第二条命令[&第三条命令…]

描述:用这些方式可以同时执行多条命令,而不管命令是否执行成功,都继续往下继续执行,这个要和&&进行分辨。

&&

用法:第一条命令&&第二条命令[&&第三条命令…]

描述:用这些方式可以同时执行多条命令bat 命令 参数,当遇到执行出错的命令后将不执行前面的命令,假如仍然没有出错则仍然执行完所有命令

example:

@format a.txt && type b.txt

||

用法:第一条命令||第二条命令[||第三条命令…]

描述:用这些方式可以同时执行多条命令,当遇到执行正确的命令后将不执行前面的命令,假如没有出现正确的命令则仍然执行完所有命令;

这个方式如同我们在测试设备能够辨识我们的某个指令,为了保险起见我们设置了多个指令,以确保我们的指令总有一个能被设备执行。

五、管道命令

|命令

用法:第一条命令|第二条命令[|第三条命令…]

描述:将第一条命令的结果作为第二条命令的参数来使用

>、>>输出重定向命令

描述:将一条命令或某个程序输出结果的重定向到特定文件中,>与>>的区别在于小型linux系统,>会消除调原有文件中的内容后写入指定文件,而>>只会追加内容到指定文件中,而不会改动其中的内容。

管线命令在我们实际使用中很有用的,你们可渐渐感受。

example:

@echo off
@echo hello > c:hello.txt
@echo hello > c:welcome.txt
@echo welcome >> c:welcome.txt

此时我们会发觉在hello.txt中,只有hello这一字符串,没有其他的内容,由于其他的内容都被清空了。

在welcome.txt中,发觉不仅hello还有welcome。这么可感受一下两者的区别。

&、&将一个句柄的输出写入到另一个句柄的输入中。

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复