文档视界 最新最全的文档下载
当前位置:文档视界 › BAT(批处理)文件编写详细手册

BAT(批处理)文件编写详细手册

BAT(批处理)文件编写详细手册
BAT(批处理)文件编写详细手册

BAT(批处理)文件编写详细手册

一、批处理文件简介

首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。

其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句 (for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的 DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。

第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch 目录(例如C:/BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:/batch,你就可以在任意位置运行所有你编写的批处理程序。

简单的说,批处理的作用就是自动的连续执行多条命令。

二、批处理中常用命令:

1.echo命令:表示显示此命令后的字符。字符不需要使用引号。其中,%和^两个字

符不能显示。

2.Echo off命令:表示在此语句后所有运行的命令都不显示命令行本身。即关闭echo

回显功能。可以使用echo on打开。

3.@命令:它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能

影响当前行)。

4.call命令:调用另一个批处理文件(如果不用call而直接调用别的批处理文件,

那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。

5.pause命令:运行此句会暂停批处理的执行并在屏幕上显示Press any key to

continue...的提示,等待用户按任意键后继续。如果不想显示以上英文提示信息,

可以这样写:pause>null

6.rem命令:表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考

用的(相当于程序中的注释)。

7.::命令:与rem命令等效。

例1:用edit编辑a.bat文件,输入下列内容后存盘为c:/a.bat,执行该批处理

文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。

批处理文件的内容为: 命令注释:

@echo off //不显示后续命令行及当前命令行

dir c:/*.* >a.txt //将c盘文件列表写入a.txt

call c:/ucdos/ucdos.bat //调用ucdos

echo 你好 //显示"你好"

pause //暂停,等待按键继续

rem 准备运行wps //注释:准备运行wps

cd ucdos //进入ucdos目录

wps //运行wps

三、批处理文件的参数:

批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符"%"。%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。

例2:C:根目录下有一批处理文件名为f.bat,内容为:

@echo off

format %1

如果执行C:/>f a:

那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a:

例3:C:根目录下一批处理文件名为t.bat,内容为:

@echo off

type %1

type %2

那么运行C:/>t a.txt b.txt

%1 : 表示a.txt

%2 : 表示b.txt

于是上面的命令将顺序地显示a.txt和b.txt文件的内容。

%0 这个不是返回参数的值了,他有两层意思!

第一层意思:返回批处理所在绝对路径

例子:

@echo off

echo %0

pause

保存为test.BAT放在桌面运行,会显示如下结果

"C:\Documents and Settings\Administrator\桌面\test.bat"

他把当前批处理执行的所在路经打印出来了,这就是返回批处理所在绝对路径的意思第二层意思:无限循环执行BAT

例子:

@echo off

net user

%0

保存为BAT执行,他就会无限循环执行net user这条命令,直到你手动停止.

%*参数:返回参数,不过他是一次返回全部参数,不用分别%1,%2等一一返回。

例子

@echo off

echo %*

同样保存为test.bat 放到C盘

进入CMD,输入cd c:\

然后输入 test.bat 我是第一个参数我是第二个参数我是第三个参数我是第四个参数

可以看到他一次把全部参数都显示出来了

四、自定义变量:

自定义变量使用set命令。如:

@echo off

set var=value //有空格的字符串也不需要引号。

echo %var%

pause

其中var就是自定义的变量。

五、特殊命令

(一)if命令

if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。有

三种格式:

1.if [not] "参数" == "字符串" 待执行的命令

//注意:为了防止参数为空的情况,一般会将参数与字符串用双引号(或

者其它符号,注意不能使用保留符号)括起来。

如:if [%1]==[A] 或者 if %1*==A*,这里*不是通配符。是要保证等号

两边的字符一致。

参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命

令,否则运行下一句。例:if "%1"=="a" format a:

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

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

如: if exist c:/config.sys type c:/config.sys //表示如果存在

c:/config.sys文件,则显示它的内容。

3.if errorlevel <数字> 待执行的命令

很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。

如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。

IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。如下的例子,先判断返回值为1的,再判断返回值为0的。

IF ERRORLEVEL 1 ECHO 文件拷贝失败

IF ERRORLEVEL 0 ECHO 成功拷贝文件

如if errorlevel 2 goto x2

4.if number 比较符 value command

EQU 等于

NEQ 不等于

LSS 小于

LEQ 小于或等于

GTR 大于

GEQ 大于或等于

5.if defined test command //如果定了了变量test,则执行command。

如:if defined test echo It is defined.

6.if 条件1 (command1) else (command2) //条件1后的命令行必须有括

号。

在if后,若要执行多条命令,可以将这些命令放在一对括号中,且左括号必须跟if关键字在同一行,如:

cd /d :/slfslfsl

if errorlevel 1 (

mkdir d:\error

mkdir d:\1

mkdir d:\2)

(二)goto命令

批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。

如:

goto end

:end

echo this is the end

标号用":字符串"来定义,标号所在行不被执行。在有多个标号时,每个标号都要有goto语句跳出,否则各个标号程序会连续执行。

注意:

(1) 标号前是ASCII字符的冒号":",冒号与标号之间不能有空格。

(2) 标号的命名规则与文件名的命名规则相同。

(3) DOS支持最长八位字符的标号,当无法区别两个标号时,将跳转至最近的一个标号。

(三)choice命令

使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。

注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice 命令语法会稍有不同,请用choice /?查看用法。

choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异):

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

描述:

该工具允许用户从选择列表选择一个项目并返回所选项目的索引。

参数列表:

/C choices 指定要创建的选项列表。默认列表是 "YN"。//即定义可选择项

/N在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。

//即[Y,N,C]?列表将隐藏,但提示用户选择的信息将正常显示。另外,/N必须用于/M参数之前。

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

/T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项

会得到选择。

/D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选项指定的一组选择中; 同时,必须用 /T 指定 nnnn。

/M text 指定提示之前要显示的消息。如果没有指定,工具只显示提示。/? 显示帮助消息。

注意:

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

示例:

CHOICE /?

CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"

CHOICE /T 10 /C ync /CS /D y

CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。"

CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。"

如果我运行命令:CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按C。"

屏幕上会显示:

确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]?

例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列):

@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:/dos/defrag

goto end

:mem

mem

goto end

:end

echo good bye

注:如果在bat文件中出现外部程序,需要知道绝对路径,并需要用引号。如:“C:\Program Files (x86)\Microsoft Office\Office14\winword.exe”

此批处理运行后,将显示"defrag,mem,end[D,M,E]?" ,用户可选择d m e ,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m 表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。

(四)for命令:

(参考https://www.docsj.com/doc/be1790218.html,/focusHr/archive/2009/02/05/1384751.html)

对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令,达到我们想要的结果。

注意:在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable,而不要

用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I。

语法:FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令

for命令可以带参数或不带参数,带参数时支持以下参数:/d /l /r /f 语法:

1.不带参数:

FOR %%variable IN (set) DO command [command-parameters]

%%variable 指定一个单一字母可替换的参数。

(set) 指定一个或一组文件。可以使用通配符。 //不带参数时,只指文件。

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

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

DO后面可以跟if等其他命令,需要用()括起来。

示例:

for %%i in (t*.*) do echo %%i --显示当前目录下与t*.*相匹配的文件(只显示文件名,不显示路径)

for %%i in (d:\mydocuments\*.doc) do @echo %%i --显示

d:\mydocuments\目录下与*.doc相匹配的文件

2.带有参数时:

(1)参数 /d (参数只能显示当前目录下的目录名字)

格式:FOR /D %variable IN (set) DO command [command-parameters]

这个参数主要用于目录搜索,不会搜索文件,/D 参数只能显示当前目录下的目录名字。(特别说明:只会搜索指定目录下的目录,不会搜索再下一级的目录。)

for /d %%i in (c:\*) do echo %%i --显示c盘根目录下的所有目录

for /d %%i in (???) do echo %%i --显示当前目录下名字只有1-3个字母的目录

(2)参数 /R (搜索指定路径及所有子目录中与set相符合的所有文件)

格式:

FOR /R [[drive:]path] %variable IN (set) DO co mmand [command-parameters]

此命令会搜索指定路径及所有子目录中与set相符合的所有文件,注意是指定路径及所有子目录。

set中的文件名如果含有通配符(?或*),则列举/R参数指定的目录及其下面的所有子目录中与set相符合的所有文件,无相符文件的目录则不列举。

如果set中为具体文件名,不含通配符,则枚举该目录树(即列举该目录及其下面的所有子目录)(并在后面加上具体的文件名),而不管set 中的指定文件是否存在。

示例:

for /r c:\ %%i in (boot.ini) do echo %%i --枚举了c盘所有目录,没有通配符,命令结果会将文件名boot.ini自动见到c:\下所有的目录下,并显示出来。

for /r c:\ %%i in (boot*.ini) do echo %%i --包括了通配符,只列举出保护符合通配符的文件所在的目录。

for /r d:\backup %%i in (1) do echo %%i --枚举d\backup目录

for /r c:\ %%i in (boot.ini) do if exist %%i echo %%i --很好的搜索命令,列举boot.ini存在的目录

(3)参数 /L (该集表示以增量形式从开始到结束的一个数字序列。可以使用

负的 Step)

格式:

FOR /L %variable IN (start,step,end) DO command [command-parameters]

for /l %%i in (1,1,5) do @echo %%i --输出1 2 3 4 5 //从1开始,递增1,最大值为5

for /l %%i in (1,2,10) do @echo %%i --输出1,3,5,7,9

for /l %%i in (100,-20,1) do @echo %%i --输出100,80,60,40,20

for /l %%i in (1,1,5) do start cmd --打开5个CMD窗口

for /l %%i in (1,1,5) do md %%i --建立从1~5共5个文件夹

for /l %%i in (1,1,5) do rd /q %%i --删除从1~5共5个文件夹

(4)参数/F(主要用来处理文件内容或命令的输出结果,/F默认将每行作为

一个元素来处理。)

格式:

FOR /F ["options"] %%i IN (file) DO command //file代表一个或多个文件。for会依次将file中的文件打开,并且在进行到下一个文件之前将每个文件读取到内存,将每行作为一个的元素,%%i代表这个元素。忽略空白的行。

FOR /F ["options"] %%i IN ("string") DO command //string 代表字符串

FOR /F ["options"] %%i IN ('command') DO command // command代表命令。命令行需要用单引号。

["options"] 可选

假如文件a.txt中有如下内容:

第1行第1列第1行第2列第1行第3列

第2行第1列第2行第2列第2行第3列

第3行第1列第3行第2列第3行第3列

你想显示a.txt中的内容,会用什么命令呢?当然是type,type a.txt for也可以完成同样的命令:

还是先从括号执行,因为含有参数/f,所以for会先打开a.txt,然后读出a.txt里面的所有内容,把它作为一个集合,并且以每一行作为一个元素,所以会产生这样的集合:

{"第1行第1列第1行第2列第1行第3列", //第一个元素

"第2行第1列第2行第2列第2行第3列", //第二个元素

"第3行第1列第3行第2列第3行第3列"} //第三个元素

集合中只有3个元素,同样用%%i依次代替每个元素,然后执行do后面的命令。tokens参数后面在描述。

具体过程:

用%%i代替"第1行第1列第1行第2列第1行第3列",执行do后面的echo %%i,显示"第1行第1列第1行第2列第1行第3列",

用%%i代替"第2行第1列第2行第2列第2行第3列",执行echo %%i,显示"第2行第1列第2行第2列第2行第3列",

依次,直到每个元素都代替完为止。

为了加强理解/f的作用,请执行一下两个命令,对比即可明白:

for /f %%i in (a.txt) do echo %%i //这个会显示a.txt里面的内容,因为/f的作用,会读出a.txt中

的内容。

for %%i in (a.txt) do echo %%i //而这个只会显示a.txt这个名字,并不会读取其中的内容。

通过上面的学习,我们发现for /f会默认以每一行来作为一个元素,但是如果我们还想把每一行再分解更小的内容,该怎么办呢?不用担心,for 命令还为我们提供了更详细的参数,使我们将每一行分为更小的元素成为可能。

它们就是:delims和tokens参数

(4.1) delims:用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键。

比如,还是上面的文件,我们执行下面的命令:

显示的结果是:

第1行第1列

第2行第1列

第3行第1列

为什么是这样的呢。因为这里有了delims这个参数,=后面有一个空格,意思是再将每个元素以空格分割,默认是只取分割之后的第一个元素。

执行过程是:

将第一个元素"第1行第1列第1行第2列第1行第3列"分成三个元素:"第1行第1列" "第1行第2列" "第1行第3列",它默认只取第一个,即"第1行第1列",然后执行do后面的命令,依次类推。

(4.2) tokens参数:它的作用就是当你通过delims将每一行分为更小的元素时,由它来控制要取哪一个或哪几个。

还是上面的例子,执行如下命令:

for /f "tokens=2 delims= " %%i in (a.txt) do echo %%i

执行结果:

第1行第2列

第2行第2列

第3行第2列

如果要显示第三列,那就换成tokens=3。如果要显示第二列和第三列,则换成tokens=2,3或tokens=2-3,如果还有更多的则为:tokens=2-10之类的。但参数的个数要相应的增加。

此时的命令为:

for /f "tokens=2,3 delims= " %%i in (a.txt) do echo %%i %%j

delims指定在每行中,用空格作为分隔符,取每行的第2和第3和元素。用%%i代替第2个元素,%%j代替第3个元素。参数必须是按照英文字母顺序排列的,%%j不能换成%%k,因为i后面是j

执行结果为:

第1行第2列第1行第3列

第2行第2列第2行第3列

第3行第2列第3行第3列

(4.3) 对于通配符*,就是把这一行全部或者这一行的剩余部分当作一个元素了。

比如:

for /f "tokens=* delims= " %%i in (a.txt) do echo %%i

执行结果为:

第1行第1列第1行第2列第1行第3列

第2行第1列第2行第2列第2行第3列

第3行第1列第3行第2列第3行第3列

再如:

for /f "tokens=2,* delims= " %%i in (a.txt) do echo %%i %%j //用%%i代替第二列,用%%j代替剩余的所有

执行结果为:

第1行第2列第1行第3列

第2行第2列第2行第3列

第3行第2列第3行第3列

(4.4) skip参数:skip就是要忽略文件的前多少行

比如:

for /f "skip=2 tokens=*" %%i in (a.txt) do echo %%i

结果为:

第3行第1列第3行第2列第3行第3列

用skip来告诉for跳过前两行。

如果不加tokens=*的话,执行结果为:

第3行第1列

(4.5) eol用来指定当一行以什么符号开始时,就忽略它。

再如,当a.txt内容变成:

.第1行第1列第1行第2列第1行第3列

.第2行第1列第2行第2列第2行第3列

第3行第1列第3行第2列第3行第3列

for /f "eol=. tokens=*" %%i in (a.txt) do echo %%i

结果是:

第3行第1列第3行第2列第3行第3列

用eol来告诉for忽略以"."开头的行。

同样也必须加tokens=*,否则只会显示"第3行第1列"

(五)set命令:设置变量

1.set显示环境变量

set 会显示当前所有的系统环境变量

set c 会显示所有以c或C开头的变量。(即:不区分大小写)

set com 显示所有以com或Com开头的变量。

2.set设置环境变量

如:set str=ok //就是将变量str的值设置成字符串“OK”

注:如果在变量值中有特殊字符,则set后面的表达式需要用双引号括起

来。

如:set “str=ok>”

3.带参数/a的set 数值计算

set的/A参数就是让SET可以支持数学符号进行加减等一些数学运算!

支持的数学运算包含(优先权递减):

() //分组

! ~ //一元运算符

* / % //算数运算符

+ //算数运算符

<<>> //逻辑移位

& //按位“与”

^ //按位“异”

| //按位“或”

= *= /= %= += -= //赋值

&= ^= |= <<= >>=

, //表达式分隔符

如:set /a var=10-2 //结果:var=8,如果没有/a,则var的值是字符串10-2

set /a var=2*2

set /a var=2/2

set /a var=(1+1)+(1+1)

set /a a=1+1,b=2+1,c=3+1 //使用“,”将表达式分隔。

echo %a% %b% %c%

注意:逻辑运算符和取余操作符需要用双引号括起来,如:

set /a var=1 “&” 1

set /a var=1 “%” 1

set /a var=2 “<<” 2

4.带参数/p的set命令:允许变量值是用户的输入行

如:set /p str=Please input you string.

echo Your input is: %str%.

注意:set /p的特殊用法

set /p=A //直接显示等号后面的内容,相当于echo A.但是显示内容后需要手动按回车键后才能继续执行下一条语句。

set /p=A

@echo off

for /l %%i in (1 1 300) do (

set /p=O

for /l %%a in (1 1 280) do ver>null) //利用for循环运行ver>null 来达到延时的目的。其中ver是显示当前命令行窗口版本的命令。也可以将var换位help,time /t等其他命令。

pause>null

5.字符串截取

格式:set a=%var:~start,len% //从变量var的值的start位开始截取,一共截取len位。若start或len位负数,表示从倒数第几位开始截取或截取倒数几位。位数的表示是从0开始的。

@echo off

set var=https://www.docsj.com/doc/be1790218.html,

set a=%var:~1,2%

echo %a%

pause>null

从第1位(也即第二个字符)开始,截取2个字符。

%var:~5% //从第6开始,截取剩下所有字符。

%var:~-3% //截取倒数3位

%var:~0,-len% //截取从第一位开始,倒数第len位结束的字符。

六、批处理示例

1.IF-EXIST

1)首先用记事本在C:/建立一个test1.bat批处理文件,文件内容如下:

@echo off

IF EXIST /AUTOEXEC.BAT TYPE /AUTOEXEC.BAT

IF NOT EXIST /AUTOEXEC.BAT ECHO /AUTOEXEC.BAT does not exist

然后运行它:

C:/>TEST1.BAT

如果C:/存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,

批处理就会提示你该文件不存在。

2)接着再建立一个test2.bat文件,内容如下:

@ECHO OFF

IF EXIST /%1 TYPE /%1

IF NOT EXIST /%1 ECHO /%1 does not exist

执行:

C:/>TEST2 AUTOEXEC.BAT

该命令运行结果同上。

说明:

(1) IF EXIST 是用来测试文件是否存在的,格式为

IF EXIST [路径+文件名] 命令

(2) test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,

分别为%1~%9(%0表示test2命令本身) ,这有点象编程中的实参和形参的关

系,%1是形参,AUTOEXEC.BAT是实参。

3)更进一步的,建立一个名为TEST3.BAT的文件,内容如下:

@echo off

IF "%1" == "A" ECHO XIAO

IF "%2" == "B" ECHO TIAN

IF "%3" == "C" ECHO XIN

如果运行:

C:/>TEST3 A B C

屏幕上会显示:

XIAO

TIAN

XIN

如果运行:

C:/>TEST3 A B

屏幕上会显示

XIAO

TIAN

在这个命令执行过程中,DOS会将一个空字符串指定给参数%3。

2.IF-ERRORLEVEL示例:

建立TEST4.BAT,内容如下:

@ECHO OFF

XCOPY C:/AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO 文件拷贝失败

IF ERRORLEVEL 0 ECHO 成功拷贝文件

然后执行文件:

C:/>TEST4

如果文件拷贝成功,屏幕就会显示"成功拷贝文件",否则就会显示"文件拷贝失败"。

IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。

因此下面的批处理文件是错误的:

@ECHO OFF

XCOPY C:/AUTOEXEC.BAT D:/

IF ERRORLEVEL 0 ECHO 成功拷贝文件

IF ERRORLEVEL 1 ECHO 未找到拷贝文件

IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作

IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作

IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误

无论拷贝是否成功,后面的:

未找到拷贝文件

用户通过ctrl-c中止拷贝操作

预置错误阻止文件拷贝操作

拷贝过程中写盘错误

都将显示出来。

3.以下就是几个常用命令的返回值及其代表的意义:

批处理的一些简单应用

内容:批处理应用的几个例子 作者:e哥(eaggle_wei) 时间:2011.3.6-2011.6.22 1.刷BIOS 我们在做测试工作时,经常要刷BIOS,而且BIOS时常更新,为了方便我们通常会把同一个机种的BIOS放在U盘中那个机种的文件名下,例如我做的P4LJ0的案子,里面BIOS 的版本从P4LJ0001一直更新到P4LJ0017,也就是文件名P4LJ0里面有17个关于BIOS的子文件,那么我们在刷BIOS时(比如我们刷P4LJ0001的bios)在dos下就会输入:C:\>cd P4LJ0 C:\P4LJ0>cd P4LJ0001 C:\ P4LJ0\P4LJ0001>bios.bat 这样一步一步来很麻烦,尤其是要刷新几十台机器的时候,所以我们就想到写个批处理放到根目录下,这样就不会每次按键按得手疼了。 例: cd P4LJ0 cd P4LJ0001 bios.bat 我们把以上内容放到一个简单字母或者数字命名的批处理中,保存下来存到U盘根目录下,例如保存到1.bat中。这样刷新时直接在提示符C:\>下输入1,然后回车就OK了,是不是很省事?当然有没有全自动化的,就是只需要插U盘,然后设置从U盘启动就OK了的?当然有了,比如我们把这个批处理命名为autoexec.bat就可以实现了,因为批处理默认这个批处理文件自动执行,但本人不建议这样做,即使你这样做了在工作结束后一定要记得把它删掉,否则可能图一时方便为以后制造不必要的麻烦。比如你把U盘插到另一个不共用的BIOS的机种上启动,这时刷完BIOS你就悲剧了,开不了机。 当然像我这种菜鸟,在刚开始看批处理的时候,连如何生成.bat文件都不懂,还以为是个高科技的东西,每次都是把一个现成的批处理文档换个位置重命名后,把要修改的内容从UltraEdit编辑器里面拷贝进去。后来找到一种新方法,先保存到一个txt文档中,然后重命名时强制修改后缀,如把1.txt重命名为1.bat后回车,当然电脑会提示你“如果更改扩展名,可能会导致文件不可用,确实要更改吗?不理会它,点是就可以了。不过使用这种方法时要注意不能把文件设为隐藏文件名,否则你找不到扩展名。至于怎么修改,哥好人做到底,知道的就跳过。打开我的电脑/计算机→在最上面的标题栏点“工具”→文件夹选项→查看→勾选“隐藏已知文件类型的扩展名”。 2.打开工作时要用到一天的东西 批处理在windows操作系统出现以后,很少有人问津了,像我们干BIOS的能够有幸知道一些,已经成为批处理的有生力量了,但一个编程高手如果不懂批处理,顶多只能算有点小成绩,像我等菜鸟懂一点批处理,毕竟还是有好处的,凡是病毒大多都包含有批处理,因为它太强大了,只要你轻轻双击一下鼠标,其他的工作就不用你做了,所以其实有时候不是病毒厉害,是你不懂病毒而打开了它,当然现在很多病毒是繁殖能力极强的,只要你插了U盘,就会被感染,这样子你就会防不胜防,所以瑞星,金山毒霸等这些杀毒软件还是需要的。不过要知道,杀毒软件永远滞后于病毒,所以你懂点批处理的小常识,就可以尽量避免打开某些恶意软件,增强你的防范能力。陈冠希的艳照门据说就是不懂照相机有备份恢复删除的知识而传出来的,所以建议大家没事多学点东西。 言归正传,比如我们要打开工作时常用的OUTLOOK,lingoes,Skype等东西,每次双击再打开,这样其实也不麻烦,但有没有办法一次性把他们都打开呢?答案是肯定的,那

十分经典的excel批处理教程

十分经典的批处理教程 这是一篇技术教程,真心诚意会用很简单的文字表达清楚自己的意思,只要你识字就能看懂,就能学到知识。写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单,那么就让它简单吧!看这篇教程的方法,就是慢!慢慢的,如同品一个女人、一杯茗茶,你会发现很多以前就在眼前的东西突然变的很遥远,而有些很遥远的东西却又突然回到了眼前。. 先概述一下批处理是个什么东东。批处理的定义,至今我也没能给出一个合适的----众多高手们也都没给出----反正我不知道----看了我也不一定信服----我是个菜鸟,当然就更不用说了;但我想总结出一个"比较合适的",而且我也相信自己可以把它解释的很清楚,让更多的菜鸟都知道这是个什么东东,你用这个东东可以干什么事情。或许你会因为这篇文章而"无条件爱上批处理",那么我的目的就达到了----我就是要让你爱上它,我就这么拽,你能怎么着??真的,爱有时候就这么拽,就是这么没理由,就是这么不要脸!真的! 按照我的理解,批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合。 OK,never claver and get to business(闲话少说言归正传)。批处理,也称为批处理脚本,英文译为BA TCH,批处理文件后缀BA T就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就ok了:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。批处理有一个很鲜明的特点:使用方便、灵活,功能强大,自动化程度高。我不想让自己写的教程枯燥无味,因为牵缠到代码(批处理的内容算是代码吧?)的问题本来就是枯燥的,很少有人能面对满屏幕的代码而静下心来。所以我会用很多简单实用的例子让读这篇教程的朋友去体会批处理的那四射的魅力,感受它那古灵精怪的性格,不知不觉中爱上批处理(晕,怎么又是爱?到底批处理和爱有什么关系?答案:没有!)。再说句"闲话":要学好批处理,DOS基础一定要牢!当然脑子灵活也是很重要的一方面。 例一、先给出一个最easy的批处理脚本让大家和它混个脸熟,将下面的几行命令保存为name.bat然后执行(以后文中只给出代码,保存和执行方式类似): ping https://www.docsj.com/doc/be1790218.html, > a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt exit 是不是都能看的懂?是不是很easy?但它的作用却是很实用的,执行这个批处理后,可以在你的当前盘建立一个名为a.txt的文件,它里面记录的信息可以帮助你迅速找到速度最快的QQ服务器,从而远离"从服务器中转"那一痛苦的过程。这里>的意思,是把前面命令得到的东西放到后面所给的地方,>>的作用,和>的相同,区别是把结果追加到前一行得出的结果的后面,具体的说是下一行,而前面一行命令得出的结果将保留,这样可以使这个a.txt文件越来越大(想到如何搞破坏了??)。By the way,这个批处理还可以和其他命令结合,搞成完全自动化判断服务器速度的东东,执行后直接显示速度最快的服务器IP,是不是很爽?后面还将详细介绍。 例二、再给出一个已经过时的例子(a.bat):

非常经典BAT知识教程

手把手教你写批处理(willsort题注版) Climbing兄可谓用心良苦,受其感昭,略紧微薄之力;原文内容一字未易,仅于每段之下另加题注,其文大多非为纠错,多是年来体会,或偶得,或渐悟,未免偏颇;又加近来俗事渐多,闲情愈少,心浮气燥,一蹴而就。义理悖逆,敬请斧正;措辞不当,尚请莫怪。 另,建议Climbing兄取文不用拘泥于国内,此类技术文章,内外水平相差极大;与其修正国内只言片语,不如翻译国外优秀著述。 -------------------------------------------------------- 标题:手把手教你写批处理-批处理的介绍 作者:佚名 编者:Climbing 出处:中国DOS联盟之联合DOS论坛 题注:willsort 日期:2004-09-21 -------------------------------------------------------- 批处理的介绍 扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。 ====willsort编注===================================================== .bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处理文件 从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从某个程度分析,batch,unix shell,awk, basic,perl等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。====================================================================== == 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 ====willsort题注==================================== 批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的应用越来越“边缘化”。所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动。 ====================================================================== ==

windows批处理文件(.bat&)

bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处理文件 从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由 外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是 由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。 所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都 是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序 仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。 =================================== 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部 分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批 处理文件。 ==== 注 =================== 批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普 通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的 应用越来越"边缘化"。所以我们讨论的批处理应该限定在dos环境或者命令行 环境中,否则很多观念和设定都需要做比较大的变动。 ======================== 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分 有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括 内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。 ==== 注 ================== 批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为 c语言文件或者c语言源代码,但只有编译连接后的exe文件才可以称之为c 语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。 =========================== 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所 在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个

实用批处理(bat)教程

目录 第一章批处理基础 第一节常用批处理内部命令简介 1、REM 和:: 2、ECHO 和@ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系统设备 8、GOTO 和: 9、FIND 10、START 11、assoc 和ftype 12、pushd 和popd 13、CALL 14、shift 15、IF 16、setlocal 与变量延迟(ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION 启动或停用延缓环境变量扩展名。) 17、ATTRIB显示或更改文件属性 第二节常用特殊符号 1、@命令行回显屏蔽符 2、%批处理变量引导符 3、> 重定向符 4、>>重定向符 5、<、>、<& 重定向符 6、|命令管道符 7、^转义字符 8、组合命令 9、& 组合命令 10、||组合命令 11、\"\"字符串界定符 12、, 逗号 13、; 分号 14、() 括号 15、! 感叹号 第二章FOR命令详解 一、基本格式 二、参数/d仅为目录 三、参数/R递归(文件名) 四、参数/L迭代数值范围 五、参数/F迭代及文件解析 第三章FOR命令中的变量

一、~I- 删除任何引号(\"),扩展%I 二、%~fI- 将%I 扩展到一个完全合格的路径名 三、%~dI- 仅将%I 扩展到一个驱动器号 四、%~pI- 仅将%I 扩展到一个路径 五、%~nI- 仅将%I 扩展到一个文件名 六、%~xI- 仅将%I 扩展到一个文件扩展名 七、%~sI- 扩展的路径只含有短名 八、%~aI- 将%I 扩展到文件的文件属性 九、%~tI- 将%I 扩展到文件的日期/时间 十、%~zI- 将%I 扩展到文件的大小 十一、%~$PATH:I 第四章批处理中的变量 一、系统变量 二、自定义变量 第五章set命令详解 一、用set命令设置自定义变量 二、用set命令进行简单计算 三、用set命令进行字符串处理 1、字符串替换 2、字符串截取 第六章if命令讲解 第一种用法:IF [NOT] ERRORLEVEL number command 第二种用法:IF [NOT] string1==string2 command 第三种用法:IF [NOT] EXIST filename command 第四种用法:IF增强的用法 第七章DOS编程高级技巧 一、界面设计 二、if…else…条件语句 三、循环语句 四、子程序 五、用ftp命令实现自动下载 六、用7-ZIP实现命令行压缩和解压功能 七、调用VBScript程序 八、将批处理转化为可执行文件 九、时间延迟 1、利用ping命令延时 2、利用for命令延时 3、利用vbs延迟函数,精确度毫秒,误差1000毫秒内 4、仅用批处理命令实现任意时间延迟,精确度10毫秒,误差50毫秒内 十、模拟进度条 十一、特殊字符的输入及应用 十二、随机数(%random%)的应用技巧 十三、变量嵌套与命令嵌套 1、更正了所有的错别字,适当排版,增加条理性。

WINDOWS下批处理文件(BAT)的参数之编辑符

批处理参数扩展变量(%0 到 %9)。当在批处理文件中使用批处理参数时,%0 将由批处理文件名替换,而 %1 到 %9 将由在命令行键入的相应参数替换。 可以在批处理参数中使用编辑符。编辑符使用当前的驱动器和目录信息将批处理参数扩展为部分或完整的文件或目录名。要使用编辑符,请键入百分号 (%) 字符,后面是波形符号 (~) 字符,然后键入合适的编辑符(即 %~modifier)。 下表列出了可在扩展中使用的编辑符。 编辑符说明 %~ %~1 扩展 %1 并删除任何引号 ( %~f %~f1 将 %1 扩展到完全合格的路径名 %~d %~d1 将 %1 扩展到驱动器盘符 %~p %~p1 将 %1 扩展到路径 %~n %~n1 将 %1 扩展到文件名 %~x %~x1 将 %1 扩展到文件扩展名 %~s %~s1 扩展的路径仅包含短名称 %~a %~a1 将 %1 扩展到文件属性 %~t %~t1 将 %1 扩展到文件日期/时间 %~z %~z1 将 %1 扩展到文件大小 %~$PATH: %~$PATH:1 搜索 PATH 环境变量中列出的目录,并将 %1 扩展到第一个找到的目录的完全合格名称。如果没有定义环境变量名称,或没有找到文件,则此编辑符扩展成空字符串 下表列出了可用于获取复杂结果的编辑符和限定符的可能组合情况: 编辑符说明 %~dp0 将 %0 扩展到驱动器盘符+路径+文件名+扩展名 %~nx1 将 %1 扩展到文件名和扩展名

%~dp$PATH:1 在 PATH 环境变量列出的目录中搜索 %1,并扩展到第一个找到的目录的驱动器盘符和路径 %~dpn0 将%0扩展到驱动器盘符+路径+文件名 %~ftza1 将 %1 扩展到类似 dir 的输出行 注意: 在上面的例子中,可以使用其它批处理参数替换 %1 和 PATH. %* 编辑符是唯一可代表在批处理文件中传递的所有参数的编辑符。不能将该编辑符与 %~ 编辑符组合使用。%~ 语法必须通过有效的参数值来终止。 不能以与使用环境变量相同的方式使用批处理参数。不能搜索或替换值,或检查子字符串。然而,可以将参数分配给环境变量,然后使用该环境变量。

如何编写bat文件

如何编写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好像只有这么一个跳转语句了,作用不用我说,用了就知道。注意不要构成死循环。

教你如何自己编写BAT批处理文件2

特殊命令 if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。 一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。有三种格式: 1、if [not] "参数" == "字符串" 待执行的命令 参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。 例:if "%1"=="a" format a: ==== if 的命令行帮助中关于此点的描述为: IF [NOT] string1==string2 command 在此有以下几点需要注意: 1. 包含字符串的双引号不是语法所必须的, 而只是习惯上使用的一种"防空"字符 2. string1 未必是参数, 它也可以是环境变量, 循环变量以及其他字符串常量或变量 3. command 不是语法所必须的, string2 后跟一个空格就可以构成一个有效的命令行 ============================= 2、if [not] exist [路径\]文件名待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 如: if exist c:\config.sys type c:\config.sys 表示如果存在c:\config.sys文件,则显示它的内容。 ****** 注******** 也可以使用以下的用法: if exist command

device 是指DOS系统中已加载的设备, 在win98下通常有: AUX, PRN, CON, NUL COM1, COM2, COM3, COM4 LPT1, LPT2, LPT3, LPT4 XMSXXXX0, EMMXXXX0 A: B: C: ..., CLOCK$, CONFIG$, DblBuff$, IFS$HLP$ 具体的内容会因硬软件环境的不同而略有差异, 使用这些设备名称时, 需要保证以下三点: 1. 该设备确实存在(由软件虚拟的设备除外) 2. 该设备驱动程序已加载(aux, prn等标准设备由系统缺省定义) 3. 该设备已准备好(主要是指a: b: ..., com1..., lpt1...等) 可通过命令mem/d | find "device" /i 来检阅你的系统中所加载的设备 另外, 在DOS系统中, 设备也被认为是一种特殊的文件, 而文件也可以称作字符设备; 因为设备(device)与文件都是使用句柄(handle)来管理的, 句柄就是名字, 类似于文件名, 只不过句柄不是应用于磁盘管理, 而是应用于内存管理而已, 所谓设备加载也即指在内存中为其分配可引用的句柄. ================================== 3、if errorlevel 待执行的命令 很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。 如if errorlevel 2 goto x2 ==== 注=========== 返回值从大到小的顺序排列不是必须的, 而只是执行命令为goto 时的习惯用法, 当使用

【最全最详细】批处理经典入门教程

批处理经典入门教程!(从不懂到高手) 例一、先给出一个最easy的批处理脚本让大家和它混个脸熟,将下面的几行命令保存为name.bat然后执行(以后文中只给出代码,保存和执行方式类似): 代码如下: ping https://www.docsj.com/doc/be1790218.html, > a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt ping https://www.docsj.com/doc/be1790218.html, >> a.txt exit 是不是都能看的懂?是不是很easy?但它的作用却是很实用的,执行这个批处理后,可以在你的当前盘建立一个名为a.txt的文件,它里面记录的信息可以帮助你迅速找到速度最快的QQ服务器,从而远离“从服务器中转”那一痛苦的过程。这里>的意思,是把前面命令得到的东西放到后面所给的地方,>>的作用,和>的相同,区别是把结果追加到前一行得出的结果的后面,具体的说是下一行,而前面一行命令得出的结果将保留,这样可以使这个a.txt 文件越来越大(想到如何搞破坏了??)。By the way,这个批处理还可以和其他命令结合,搞成完全自动化判断服务器速度的东东,执行后直接显示速度最快的服务器IP,是不是很爽?后面还将详细介绍。 例二、再给出一个已经过时的例子(a.bat): @echo off if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif a.bat 为什么说这是个过时的例子呢?很简单,因为现在已经几乎没有人用带广告的QQ了(KAO,我的QQ还显示好友三围呢!!),所以它几乎用不上了。但曾经它的作用是不可小窥的:删除QQ的广告,让对话框干干净净。这里用的地址是QQ的默认安装地址,默认批处理文件名为a.bat,你当然可以根据情况自行修改。在这个脚本中使用了if命令,使得它可以达到适时判断和删除广告图片的效果,你只需要不关闭命令执行后的DOS窗口,不按CTRL+C强行终止命令,它就一直监视是否有广告图片(QQ也再不断查看自己的广告是否被删除)。当然这个脚本占用你一点点内存,呵呵。 例三,使用批处理脚本查是否中冰河。脚本内容如下: 复制代码代码如下: @echo off

BAT和CMD脚本的编写与实际应用全解

BAT、CMD脚本的编写与实际应用 在微软官方的定义中,BAT属于批处理脚本(可以运行在DOS、WINDOWS下),是用来进行简化平时操作的批量化集成文件。而CMD,则是只能运行在NT系统下的批处理文件,其功能与BAT是一样的。 从早期的BAT开始,该文件就为大家提供了方便,并在WINDOWS出现后,它的能力可以说是万能的。从最基础的启动盘的引导,到注册表,甚至系统服务的操作,BAT与CMD都可以胜任。而且由于它简便的编写与通用性,很快就布满整个世界。 本文将简单介绍BAT与CMD脚本的编写过程,因为在下水平不高,所以如有错误欢迎指出! 一、BAT与CMD中的部分参数 1、定义文件夹的参数 目前我能够搜集到并可以给出意思的通用系统参数如下(不包括后边的解释部分): %windir% ——操作系统文件夹,一般为C:下的WINDOWS文件夹 %sys% ——系统根目录,也就是C:盘目录 %programfiles% ——Program Files目录,安装程序通常都安装在这个目录下 %systemdrive% ——操作系统所在磁盘,与%sys%属于同一目录 %systemroot% ——操作系统文件夹,一般为C:下的WINDOWS文件夹 %InfDir% ——系统根目录,也就是C:盘目录 %TEMP% ——当前用户的临时目录,一般是C:\Documents and Settings\用户名\Local Settings\Temp目录 2、基础操作参数(可以在CMD命令行模式中输入HELP获得) ASSOC 显示或修改文件扩展名关联。 AT 计划在计算机上运行的命令和程序。 ATTRIB 显示或更改文件属性。 BREAK 设置或清除扩展式CTRL+C 检查。 CACLS 显示或修改文件的访问控制列表(ACLs)。 CALL 从另一个批处理程序调用这一个。 CD 显示当前目录的名称或将其更改。 CHCP 显示或设置活动代码页数。 CHDIR 显示当前目录的名称或将其更改。 CHKDSK 检查磁盘并显示状态报告。 CHKNTFS 显示或修改启动时间磁盘检查。 CLS 清除屏幕。 CMD 打开另一个Windows 命令解释程序窗口。 COLOR 设置默认控制台前景和背景颜色。 COMP 比较两个或两套文件的内容。 COMPACT 显示或更改NTFS 分区上文件的压缩。 CONVERT 将FAT 卷转换成NTFS。您不能转换 当前驱动器。 COPY 将至少一个文件复制到另一个位置。 DATE 显示或设置日期。 DEL 删除至少一个文件。 DIR 显示一个目录中的文件和子目录。 DISKCOMP 比较两个软盘的内容。 DISKCOPY 将一个软盘的内容复制到另一个软盘。

bat文件语句语法

BAT文件语法和技巧(bat文件的编写及使用)(转载一) 比较有用的东比较有用的东西 首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows 的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:\batch,你就可以在任意位置运行所有你编写的批处理程序。 第四,在DOS和Win9x/Me系统下,C:盘根目录下的AUTOEXEC.BAT批处理文件是自动运行批处理文件,每次系统启动时会自动运行该文件,你可以将系统每次启动时都要运行的命令放入该文件中,例如设置搜索路径,调入鼠标驱动和磁盘缓存,设置系统环境变量等。下 面是一个运行于Windows 98下的autoexec.bat的示例: ? 1 2 3 4 5 6 7 @ECHOOFF PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\UCDOS;C:\DOSTools;C:\SYSTOOLS;C:\WINTOOLS;C:\B LH SMARTDRV.EXE /X LH https://www.docsj.com/doc/be1790218.html, /INSERT LH CTMOUSE.EXE SETTEMP=D:\TEMP SETTMP=D:\TEMP 批处理的作用 简单的说,批处理的作用就是自动的连续执行多条命令。 这里先讲一个最简单的应用:在启动wps软件时,每次都必须执行(>前面内容表示DOS

bat文件的基本应用

bat文件的基本应用 bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处理文件 从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。 =================================== 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 ==== 注=================== 批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的应用越来越"边缘化"。所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动。 ======================== 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。 ==== 注================== 批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为c语言文件或者c语言源代码,但只有编译连接后的exe文件才可以称之为c语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。 =========================== 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后

目前为止最全的批处理教程

目录 第一章 批处理基础 第一节 常用批处理内部命令简介 1、REM 和 :: 2、ECHO 和 @ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系统设备 8、GOTO 和 : 9、FIND 10、START 11、assoc 和 ftype 12、pushd 和 popd 13、CALL 14、shift 15、IF 16、setlocal 与 变量延迟(ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION 启动或停用延缓环境变量扩展名。) 17、ATTRIB显示或更改文件属性 第二节 常用特殊符号

1、@命令行回显屏蔽符 2、%批处理变量引导符 3、> 重定向符 4、>>重定向符 5、<、>、<& 重定向符 6、|命令管道符 7、^转义字符 8、组合命令 9、& 组合命令 10、||组合命令 11、\"\"字符串界定符 12、, 逗号 13、; 分号 14、() 括号 15、! 感叹号 第二章 FOR命令详解 一、基本格式 二、参数 /d仅为目录 三、参数 /R递归(文件名) 四、参数 /L迭代数值范围 五、参数 /F迭代及文件解析 第三章 FOR命令中的变量

一、 ~I- 删除任何引号(\"),扩展 %I 二、 %~fI- 将 %I 扩展到一个完全合格的路径名 三、 %~dI- 仅将 %I 扩展到一个驱动器号 四、 %~pI- 仅将 %I 扩展到一个路径 五、 %~nI- 仅将 %I 扩展到一个文件名 六、 %~xI- 仅将 %I 扩展到一个文件扩展名 七、 %~sI- 扩展的路径只含有短名 八、 %~aI- 将 %I 扩展到文件的文件属性 九、 %~tI- 将 %I 扩展到文件的日期/时间 十、 %~zI- 将 %I 扩展到文件的大小 十一、 %~$PATH:I 第四章 批处理中的变量 一、系统变量 二、自定义变量 第五章 set命令详解 一、用set命令设置自定义变量 二、用set命令进行简单计算 三、用set命令进行字符串处理 1、字符串替换 2、字符串截取 第六章 if命令讲解 第一种用法:IF [NOT] ERRORLEVEL number command

BAT(批处理)文件编写详细手册

BAT(批处理)文件编写详细手册 一、批处理文件简介 首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句 (for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的 DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch 目录(例如C:/BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:/batch,你就可以在任意位置运行所有你编写的批处理程序。 简单的说,批处理的作用就是自动的连续执行多条命令。 二、批处理中常用命令: 1.echo命令:表示显示此命令后的字符。字符不需要使用引号。其中,%和^两个字 符不能显示。 2.Echo off命令:表示在此语句后所有运行的命令都不显示命令行本身。即关闭echo 回显功能。可以使用echo on打开。 3.@命令:它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能 影响当前行)。 4.call命令:调用另一个批处理文件(如果不用call而直接调用别的批处理文件, 那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 5.pause命令:运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续。如果不想显示以上英文提示信息, 可以这样写:pause>null 6.rem命令:表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考 用的(相当于程序中的注释)。 7.::命令:与rem命令等效。 例1:用edit编辑a.bat文件,输入下列内容后存盘为c:/a.bat,执行该批处理 文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。 批处理文件的内容为: 命令注释: @echo off //不显示后续命令行及当前命令行

批处理命令大全(合集命令)

1 echo 和@ 回显控制命令 @ #关闭单行回显 echo off #从下一行开始关闭回显 @echo off #从本行开始关闭回显。一般批处理第一行都是这个 echo on #从下一行开始打开回显 echo #显示当前是echo off 状态还是echo on 状态 echo. #输出一个"回车换行",一般就是指空白行 echo hello world #输出hello world "关闭回显"是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果 批处理开始和结束时,系统都会自动打开回显 2 errorlevel 程序返回码 echo %errorlevel% 每个命令运行结束,可以用这个命令行格式查看返回码 用于判断刚才的命令是否执行成功 默认值为0,一般命令执行出错会设errorlevel 为1 3 dir 显示目录中的文件和子目录列表 dir #显示当前目录中的文件和子目录 dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件 dir c: /a:d #显示C 盘当前目录中的目录 dir c:\ /a:-d #显示C 盘根目录中的文件 dir d:\mp3 /b/p #逐屏显示d:\mp3 目录里的文件,只显示文件名,不显示时间和大小dir *.exe /s 显示当前目录和子目录里所有的.exe文件 其中* 是通配符,代表所有的文件名,还一个通配符? 代表一个任意字母或汉字 如c*.* 代表以 c 开头的所有文件 ?.exe 代表所有文件名是一个字母的.exe文件 如果指定的目录或文件不存在,将返回errorlevel 为1 每个文件夹的dir 输出都会有2个子目录. 和.. . 代表当前目录 .. 代表当前目录的上级目录 dir . #显示当前目录中的文件和子目录 dir .. #显示当前目录的上级目录中的文件和子目录 其它参数可参考dir /? 4 cd 更改当前目录 cd mp3 #进入当前目录中的mp3 目录 cd .. #进入当前目录中的上级目录 cd\ #进入根目录

BAT(批处理)文件编写详细手册

BAT(批处理)文件编写详细手册

BAT(批处理)文件编写详细手册 一、批处理文件简介 首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好 象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创 建和修改批处理文件。 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制 命令运行的流程,在批处理中也可以使用循 环语句 (for)来循环执行一条命令。当然, 批处理文件的编程能力与C语言等编程语句 比起来是十分有限的,也是十分不规范的。 批处理的程序语句就是一条条的 DOS命令 (包括内部命令和外部命令),而批处理的 能力主要取决于你所使用的命令。 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在

任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch 目录(例如 C:/BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:/batch,你就可以在任意位置运行所有你编写的批处理程序。 简单的说,批处理的作用就是自动的连续执行多条命令。 二、批处理中常用命令: 1.e cho命令:表示显示此命令后的字符。字符 不需要使用引号。其中,%和^两个字符不能显示。 2.E cho off命令:表示在此语句后所有运行的 命令都不显示命令行本身。即关闭echo回显功能。可以使用echo on打开。 3.@命令:它是加在每个命令行的最前面,表示 运行时不显示这一行的命令行(只能影响当前行)。 4.c all命令:调用另一个批处理文件(如果不 用call而直接调用别的批处理文件,那么执

相关文档