`

windows批处理命令小结

阅读更多

批处理命令

来源:百度百科-批处理

Echo命令回显

打开回显或是关闭回显功能命令,有参数on | off,如果没有参数,echo将显示当前回显设置。

语法为:echo[{on|off}][msg].

使用:

如果使用参数off,屏幕上不出现命令提示符。

需要显示时要有echo on

当然我们为了保密,不显示命令行,当需要显示消息行时,就使用“echo 消息”的方式。

当打开回显(echo on),但是只是不想显示某一行,则可以在那个命令行前加“@”。

要在屏幕上显示空白行,用命令echo+点:(echo .”)。

当使用 echo命令时,要显示管道 (|) 或重定向字符(< >),请在管道 (|) 或重定向字符(例如,^>^< ^|)的前面使用脱字符 (^)。如果需要使用脱字符 (^),请键入两个脱字符 (^^)

Rem 命令注释

注释批处理文件的命令行的命令。相当于/*…*/.

REM命令可以使用 :: 标记替换,例如:

@echo use :: comment

:: this is a test batch file

@echo use rem comment

@rem this is annotated by rem > echo.txt

结果会显示:

use :: comment

use rem comment

Goto 命令

指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。

语法:

goto label

label是参数,指定所要转向的批处理程序中的行。)
示例:

if {%1}=={} goto noparms

if {%2}=={} goto noparms

(这里的if%1%2在后面会有详细的解释。)

@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end

标签的名字可以随便起,但是最好是有意义的字母,名字前加个:用来表示这个名字是标签,goto命令就是根据这个""来寻找下一步跳到哪里。

Pause 命令

运行 Pause 命令时,将显示下面的消息:
Press any key to continue . . .
语法:

pause

示例:

@echo off
:begin
copy a:*.* d:\back
echo Please put a new disk into driver A
pause
goto begin

在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示你将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理.

Call 命令

从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。如果命令扩展被启用,call命令接受用作调用目标的标签。如果在脚本或批处理文件外使用Call,它将不会在命令行起作用。
   
语法:

call [[Drive:][Path] FileName [BatchParameters]] | [:label [arguments]]

参数 [Drive:][Path] FileName 指定要调用的批处理程序的位置和名称。filename参数必须具有 .bat.cmd 或者 .exe 扩展名。BatchParameters指定批处理程序所需的命令行信息。

例:call ant -buildfile %EXPORT_PATH%\build\build.xml –logfile %build_path%\buildLog.txt

释:是一个在bat文件中调用ant.bat批处理文件来构建项目的命令。在这里fileName就是ant(隐含的扩展名是.bat,parametersbuildfilelogfilebuildfile后面说明需要使用ant来构建的文件,logfile说明在构建过程中的日志记录在哪个文件中。它们的语法形式是ant所需要的,这里不多讲。需要说的是ant.bat这个文件的路径已经存在于计算机的环境变量的path中,如果没有,也一定是在主调bat文件中通过set的方式设置过了,否则不能运行。

 

当使用标签作为调用目标时,一个新的批文件上下文由指定的参数所创建,控制在卷标被指定后传递到语句。你必须通过达到批脚本文件末两次来 "exit" 两次。第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次会退出批脚本。键入 GOTO /?,参看 GOTO : EOF 扩展名的描述,此描述允许您从一个批脚本返回。

Setlocal Endlocal 命令

开始与终止批处理文件中环境改动的本地化操作。在执行 Setlocal 之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执行 Endlocal。达到批处理文件结尾时,对于该批处理文件的每个尚未执行的 Setlocal 命令,都会有一个隐含的 Endlocal 被执行。Endlocal结束批处理文件中环境改动的本地化操作。在执行Endlocal 之后所做的环境改动不再仅限于批处理文件。批处理文件结束后,原先的设置无法还原。
   
语法:

Setlocal {enableextension | disableextensions} {enabledelayedexpansion | disabledelayedexpansion}
...
Endlocal
...

如果命令扩展名被启用,SETLOCAL 可以接受{}中的可选参数,启动或停用命令处理器扩展名及延缓环境变量扩展名。详细信息,百度百科-批处理用户变量。无论在 Setlocal 命令之前它们的设置是什么,这些修改会一直保留到匹配的 Endlocal 命令。
示例:

@ECHO OFF
Echo Before Setlocal:
Set PATH //
可以替换为path
Pause
Setlocal
Rem reset environment var PATH
Set PATH=E:\TOOLS
Echo after Setlocal and reset PATH
Set PATH  //
可以替换为path
Pause
Endlocal
Echo Recovery PATH by Endlocal
Set PATH //
可以替换为path语句

从上例我们可以看到环境变量PATH1次被显示得时候是系统默认路径。被设置成了“E:\TOOLS”后显示为“E:\TOOLS”。但当 Endlocal 后我们可以看到他又被还原成了系统的默认路径。但这个设置只在该批处理运行的时候有作用。当批处理运行完成后环境变量PATH将会还原。

Start 命令

启动另一个窗口运行指定的程序或命令,所有的DOS命令和命令行程序都可以由start命令来调用。
语法:

START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] [/WAIT] [/B] [command/program] [parameters]

Choice 命令—windowsXP不支持

Shift 命令
更改批处理文件中可替换参数的位置。
语法: Shift [/n]

如果命令扩展名被启用,SHIFT 命令支持/n 命令行开关;该命令行开关告诉命令从第 n 个参数开始移位;n 介于零和八之间。否则,从第1个参数开始移位。
   
通过shift命令,可以让命令行上的命令使用超过9个(%1~%9%0是批处理命令本身)以上的可替代参数。
   
示例:

ECHO OFF
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
SHIFT
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
SHIFT
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9

执行结果如下:

C:\> SHIFT.BAT 1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 10
3 4 5 6 7 8 9 10 11

带参数的SHIFT命令执行示例如下:

Shift /2

上面的命令会将 %3 移位到 %2,将 %4 移位到 %3,等等;并且不影响 %0 %1

事实上,处理命令行上9个以上的参数,亦可以使用for命令组合%*来完成。
示例:

for %%a in (%*) do echo %%a

Set 命令
显示、设置或删除 cmd.exe 环境变量。
语法:

SET [variable=[string]]
SET [[/a [expression]] [/p [variable=]] string]

variable 指定环境变量名。string 指定要指派给变量的一系列字符串。
显示当前环境变量,键入不带参数的 SET
如果命令扩展名被启用,SET 会如下改变:
仅用一个变量名而不带等号或者值激活 SET 命令时,显示所有前缀与提供给SET命令相匹配的变量名及其值。例如:

SET P

会显示所有以字母 P 打头的变量。
如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL设置成 1
SET
命令不允许变量名含有等号。
SET 命令中添加了两个新命令行开关:

SET /A expression
SET /P variable=[promptString]

/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式评估器很简单并以递减的优先权顺序支持下列操作:

运算符

执行的操作

()

分组

! ~ -

一元运算符

* / %

算术运算符(乘、除、取余)

+ -

算术运算符

<< >>

逻辑移位

&

按位运算

^

按位异或运算

|

按位运算

= *= /= %= += -= &= ^= |= <<= >>=

赋值

,

表达式分隔符

如果你使用任何逻辑或取余操作符, 你需要将表达式字符串用引号扩起来。在表达式中的任何非数字字符串将作为环境变量名称,这些环境变量名称的值已在使用前转换成数字。如果指定了一个环境变量名称,但未在当前环境中定义,那么值将被定为零。这使你可以使用环境变量值做计算而不用键入那些 % 符号来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,那么它显示该表达式的最后值。该分配的操作符在分配的操作符左边需要一个环境变量名称。除十六进制有 0x 前缀, 八进制有 0 前缀的,数字值为十进位数字。因此, 0x12 18 022相同。请注意八进制公式可能很容易搞混: 08 09 是无效的数字,因为 8 9 不是有效的八进制位数。

/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptStringpromptString 可以是空的。

强大的set命令。

环境变量替换已如下增强:

%PATH:str1=str2%

会扩展 PATH 环境变量,用"str2"代替扩展结果中的每个"str1"。要有效地从扩展结果中删除所有的"str1""str2"可以是空的。"str1"可以以星号打头;在这种情况下,"str1"会从扩展结果的开始到 str1 剩余部分第一次出现的地方,都一直保持相配。也可以为扩展名指定子字符串。

%PATH:~10,5%

会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 (偏移量 10)字符开始的五个字符。如果没有指定长度,则采用默认值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,使用的数字则是环境变量数值长度加上指定的偏移量或长度。

%PATH:~-10%

会提取 PATH 变量的最后十个字符。

%PATH:~0,-2%

会提取 PATH 变量的所有字符,除了最后两个。

 

下面这个例子比较全面地展示了 SET 命令的上述扩展功能:

set

显示目前所有可用的变量,包括系统变量和自定义的变量

echo %SystemDrive%

显示系统盘盘符。系统变量可以直接引用

set p

显示所有以p开头的变量,要是一个也没有就设errorlevel=1

set p=aa1bb1aa2bb2

设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2

echo %p%

显示变量p代表的字符串,即aa1bb1aa2bb2

echo %p:~6%

显示变量p中第6个字符以后的所有字符,即aa2bb2

echo %p:~6,3%

显示第6个字符以后的3个字符,即aa2

echo %p:~0,3%

显示前3个字符,即aa1

echo %p:~-2%

显示最后面的2个字符,即b2

echo %p:~0,-2%

显示除了最后2个字符以外的其它字符,即aa1bb1aa2b

echo %p:aa=c%

c替换变量p中所有的aa,即显示c1bb1c2bb2

echo %p:aa=%

将变量p中的所有aa字符串置换为空,即显示1bb12bb2

echo %p:*bb=c%

第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2

set p=%p:*bb=c%

设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2

set /a p=39

设置p为数值型变量,值为39

set /a p=39/10

支持运算符,有小数时用去尾法,39/10=3.9,去尾得3p=3

set /a p=p/10

/a 参数时,在 = 后面的变量可以不加%直接引用

set /a p="1&0"

""运算,要加引号。其它支持的运算符参见set/?

set p=

取消p变量

set /p p=请输入

屏幕上显示"请输入",并会将输入的字符串赋值给变量p注意这条可以用来取代 choice 命令

If 命令
表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:
1
if [NOT]"参数" == "字符串"  待执行的命令
参数如果等于(或者不等于)指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)

if "%1"=="a" format a:

if {%1}=={} goto noparms
if {%2}=={} goto noparms

2if [NOT] exist 文件名  待执行的命令
如果存在(或者不存在)指定的文件,则条件成立,运行命令,否则运行下一句。

if exist config.sys edit config.sys

3if [NOT] errorlevel 数字  待执行的命令

如果返回码大于或者等于(或者小于,使用NOT)指定的数字,则条件成立,运行命令,否则运行下一句。

if errorlevel 2 goto x2
if errorlevel 1 goto x1

DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为01。数字取值范围0~255。判断时值的排列顺序应该由大到小,否则会出现非期望的结果,例如:

if errorlevel 1 goto x1
if errorlevel 2 goto x2

后面的一行指令将永远得不到执行,因为当errorlevel大于等于2时必然大于等于1。此外,IF ERRORLEVEL这条语句必须放在某一个命令后面,否则ERRORLEVEL这个变量的值可能会被新的命令覆盖。

值得注意的是,ELSE 子句必须在 IF 之后出现在同一行上。例如以下子句不会有效:

IF EXIST filename. del filename.
ELSE echo filename. missing

但因为 del 命令需要用一个新行终止(可以同时删除多个文件),所以以下子句也不会有效:

IF EXIST filename. del filename. ELSE echo filename. missing

要实现上述意图,则必须采用下面的办法:

IF EXIST filename. (
  del filename.
) ELSE (
  echo filename. missing.
)

或者一定要使命令在同一行的话,则以下子句有效:

IF EXIST filename. (del filename.) ELSE echo filename. missing

For 命令

for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令,使用指定集合中的每个文本字符串替换循环变量 %variable %%variable,直到 command 处理所有文件为止。在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable

for {%variable | %%variable} in (set) do command [CommandLineOptions]

%variable 指定一个单一字母可替换的参数。
(set)
参数代表单个或多个文件组。可以使用通配符(即 * ?)指定文件组。以下为有效文件组:
(*.doc)
(*.doc *.txt *.me)
(jan*.doc jan*.rpt feb*.doc feb*.rpt)
(ar??1991.* ap??1991.*)
command
指定对每个文件执行的命令。
command-parameters
为特定命令指定参数或命令行开关。

在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.

 

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

/D 选项将指定与目录名匹配,而不与文件名匹配。

 

/R 选项是指递归操作,它将遍历以 [drive:]path 为根的目录树,依次对目录树中的每个子目录执行此 FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。此外,可以将 /D 选项与 /R 选项联用,例如下面的命令将列出当前目录下面的所有子目录,且不带"."号:

FOR /D /R %a IN (*) DO @echo %a

注意,这与不使用 /D 选项而在集中指明一个单点的不同之处,在于 /D 选项将会优先列出父目录下的所有子目录名,然后再对子目录进行递归处理。

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

 

/L 选项表示执行集合为一个逻辑表达式,它是按一定的步进量从开始到结束的一个数字序列。

比如,(1,1,5) 将产生序列 1 2 3 4 5(5,-1,1) 将产生序列 (5 4 3 2 1)。以下列举一个简单的例子,说明参数/L和没有参数的区别:
   
删除文件1.TXT 2.TXT 3.TXT 4.TXT 5.TXT

FOR /L %%F IN (1,1,5) DO DEL %%F.TXT

FOR %%F IN (1,2,3,4,5) DO DEL %%F.TXT

以上2条命令执行的结果都是一样的.

FIND命令
    find 命令用于在文件中搜索指定的字符串或文字,然后显示所有含(也可以通过相应的命令选项设为不含有)指定字符串或者文字的行。find 命令既可用作筛选器,也可以用作标准的 Windows XP 命令。命令的用法:

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

参数说明:

/V

显示所有未包含指定字符串的行。

/C

仅显示包含字符串的行数。

/N

显示行号。

/I

搜索字符串时忽略大小写。

/OFF[LINE]

不要跳过具有脱机属性集的文件。

"string"

指定要搜索的文字串

[drive:][path]filename

指定要搜索的文件。

如果没有指定路径,FIND 将搜索键入的或者由另一命令产生的文字。

补充:

find 命令只列出找出的字符串的行数。

还有一个命令findstr将列出找到的字符串,可能将找到的字符串都列出来。

分享到:
评论

相关推荐

    cmd批处理命令教程

    #### 四、小结 通过学习上述CMD批处理命令,我们不仅能够编写简单的批处理脚本,还能构建出更为复杂的自动化任务。在日常工作中,熟练掌握这些命令可以帮助我们更高效地完成各种任务。希望本文能为您的学习和工作...

    windows批处理-基础-循环判断语句使用

    ### 小结 本文详细介绍了Windows批处理脚本中常用的循环和判断语句的基本用法及实际应用场景。通过这些控制结构,我们可以编写出更加灵活和强大的批处理脚本来自动化日常任务。希望本文能帮助大家更好地理解和应用...

    BAT批处理脚本-提示窗口进度条-批处理弹窗提示小结.zip

    "BAT批处理脚本-提示窗口进度条-批处理弹窗提示小结.zip"这个压缩包包含了关于如何在批处理脚本中创建提示窗口和进度条的技巧和实例。以下是对这些知识点的详细说明: 批处理脚本(BAT)是基于DOS或Windows操作系统...

    Windows-XP-服务优化批处理.pdf

    Windows XP 服务优化批处理 本文档将对 Windows XP ...### 小结 本文档提供了一个批处理脚本,用于优化 Windows XP 的服务设置,提高系统性能和安全性。该脚本可以帮助用户禁用不必要的服务,提高系统性能和安全性。

    本文包括批处理bat的一些常用知识小结并附上例子

    批处理(Batch Processing)是Windows操作系统中的一种命令脚本技术,主要通过.bat或.cmd扩展名的文件来实现自动化任务执行。这种技术对于批量处理文件、系统维护、简化重复操作等场景非常有用。以下是对批处理BAT...

    linux下FTP命令详解

    #### 三、小结 以上介绍了在Linux环境中常用的FTP命令及其基本用法。通过这些命令,用户可以在Linux系统中高效地管理文件和目录,实现文件的上传和下载等操作。熟悉并掌握这些命令对于日常的文件管理和数据传输非常...

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

    #### 五、小结 通过掌握和灵活运用批处理文件中的编辑符,可以极大地提高脚本的灵活性和功能性。无论是简单的文件名提取还是复杂的文件属性查询,编辑符都提供了强大的支持。希望本文能帮助您更好地理解和利用这些...

    00非常批处理学习教程00

    ### 小结 批处理作为一种简单的脚本语言,虽然功能相对有限,但在Windows操作系统中仍然有着广泛的应用场景。通过对上述命令的学习和实践,你可以编写出各种实用的批处理脚本来自动化日常任务。

    批处理禁用USB设备.txt

    #### 七、小结 通过以上分析可以看出,利用批处理文件禁用USB设备是一项实用的技术。它不仅能够提高系统的安全性,还能简化日常管理流程。当然,在实际部署过程中还需要根据具体的环境和需求来进行调整和完善。

    cmd批处理学习技巧

    ### 小结 通过本文的学习,我们可以了解到CMD不仅是一个简单的命令行工具,更是执行复杂任务的强大平台。通过合理运用CMD的各种命令和语法结构,可以极大地提高工作效率和系统管理能力。无论是日常的文件管理还是...

    Windows脚本从入门到精通系列(一)

    #### 小结与参考 本系列教程将通过一系列的讲解和练习,带领读者逐步掌握Windows脚本的编写技巧。读者可以通过Microsoft TechNet等官方文档和社区资源获取更多关于Windows脚本的详细信息和技术支持。 通过以上内容...

    批处理bat文件

    #### 八、小结 通过以上介绍,我们可以看到批处理bat文件的强大功能。不仅可以实现简单的文件复制、删除操作,还能创建文件夹、执行程序以及进行复杂的文件复制管理。合理利用这些命令和参数,可以极大地提高工作...

    十个节省时间的MySQL命令小结

    7. **使用`--batch`选项**:此选项使得MySQL客户端以批处理模式运行,输出结果不包含任何格式化,方便机器解析。 8. **利用`\!`命令执行shell命令**:在MySQL客户端内,可以使用`\!`前缀执行系统命令,如`\! ls`列...

    Cmder简单使用小结.docx

    ### Cmder简单使用小结 #### 一、Cmder简介 Cmder是一款针对Windows操作系统的命令行工具,以其简洁美观的界面和强大的功能成为很多开发者的首选。相较于传统的命令提示符(CMD)和PowerShell,Cmder不仅支持大...

    ANT 基础学习小结

    ### ANT基础学习小结 #### 一、Ant简介与应用场景 Apache Ant 是一个Java环境下的构建工具,主要用于软件编译、测试、部署等自动化任务。它通过XML来定义构建过程,使得开发者能够轻松地管理项目的构建流程。在很...

    windows下如何实现磁盘满额自动邮件报警.docx

    #### 四、小结 通过以上步骤,可以在Windows环境中成功实现磁盘满额时自动发送邮件报警的功能。这种方法不仅能够有效监控磁盘空间使用情况,还能在出现异常时及时通知管理员,确保系统的稳定运行。此外,该方案还...

    win脚本概述

    小结和参考 通过以上介绍,我们可以看出Windows脚本是一种非常实用的技术,在企业环境中有着广泛的应用场景。掌握基本的脚本编写技能对于IT专业人员来说是非常有价值的。学习资源方面,可以参考微软官方文档和技术...

Global site tag (gtag.js) - Google Analytics