前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Wins批处理基本语法

Wins批处理基本语法

作者头像
陈树义
发布2018-04-13 16:45:07
1.4K0
发布2018-04-13 16:45:07
举报
文章被收录于专栏:陈树义陈树义

在Windows平台下,批处理可以和Wins系统很好地结合,处理一些简单的任务,比如:重复删除某种类型的文件;开机执行一些特定的命令等。

本文主要介绍批处理的基础语法,包括:批处理常用命令和流程控制。本文是在网友SS1写的博文基础上进一步整理而成,在此表示感谢。

1、关于批处理

批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令。当你编辑好批处理文件并将其保存成后缀名为“.bat”的文件之后,双击该文件或者在DOS窗口键入文件名,都可以执行该文件中的DOS命令。

2、常用命令

echo:表示显示此命令后的字符。如:

代码语言:javascript
复制
C:\>echo 我在博客园
我在博客园

@echo off:表示在此语句以及此语句后所有运行的命令都不显示命令行本身,如:

①不加echo参数

代码语言:javascript
复制
REM 将下面两行代码保存为test.bat文件
IF "1" == "1" ECHO 我是好人
PAUSE

控制台打印:

代码语言:javascript
复制
S:\>REM 将下面两行代码保存为test.bat文件
S:\>IF "1" == "1" ECHO 我是好人
我是好人
S:\>PAUSE
请按任意键继续. . .

②加上了@echo off参数,即:

代码语言:javascript
复制
@echo off
REM 将下面两行代码保存为test.bat文件
IF "1" == "1" ECHO 我是好人
PAUSE

控制台打印:

代码语言:javascript
复制
我是好人
请按任意键继续. . .

注:这个命令由“@”与“echo off”组合而成,“@”表示忽略不显示本行命令行,“echo off”表示不显示本语句后的所有命令行。

call:调用另一个批处理文件,如:

代码语言:javascript
复制
REM 调用同一目录下的另一个批处理文件test2.bat
call test2.bat

注:如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令

pause:暂时停止执行DOS命令,待用户键入任一字符才继续执行

rem:表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。 

3、 IF语句

用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 

第一种: if [not] "参数" == "字符串" 待执行的命令。如:

代码语言:javascript
复制
IF "1" = "1" ECHO 相等

第二种:if [not] exist [路径\]文件名 待执行的命令。如:

代码语言:javascript
复制
IF exist c:\test.txt echo text.txt文件存在

第三种:if errorlevel <数字> 待执行的命令。如:

代码语言:javascript
复制
@ECHO OFF
XCOPY TEST.TXT S:\TEMP
IF ERRORLEVEL 1 ECHO "Copy Failed"
IF ERRORLEVEL 0 ECHO "Copy Succeed"

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

4、GOTO命令

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

代码语言:javascript
复制
goto end 
:end 
echo this is the end

注:标号用“:字符串”来定义,标号所在行不被执行

5、choice命令

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

代码语言:javascript
复制
@echo off
CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。" 
PAUSE

注:/C /M 都是choice命令的参数,你可以在控制台输入“choice /?”来查看帮助

控制台打印:

代码语言:javascript
复制
确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]?Y
请按任意键继续. . .

6、FOR 循环

只要条件符合,它将多次执行同一命令。 如:

代码语言:javascript
复制
for %c in (*.txt) do type %c

其中“%c”表示一个单一字母可替换的参数;括号中可以指定一个或一组文件,可以使用通配符。

上面的命令表示打印出本目录下所有的txt文件的内容。

7、综合例子

判断文件是否存在,存在则打印字符

代码语言:javascript
复制
@echo off 
IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT 
IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist

输入文件名,判断该文件是否存在

代码语言:javascript
复制
@ECHO OFF 
IF EXIST %1 TYPE %1 
IF NOT EXIST %1 ECHO %1 does not exist

注:“%1”表示运行该bat命令时输入的第一个参数。DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身) 

判断输入的字符,输出不同的内容

代码语言:javascript
复制
@echo off 
IF "%1" == "A" ECHO XIAO 
IF "%2" == "B" ECHO TIAN 
IF "%3" == "C" ECHO XIN

拷贝文件,并提示是否拷贝成功

代码语言:javascript
复制
@ECHO OFF 
XCOPY C:\AUTOEXEC.BAT D:
IF ERRORLEVEL 1 ECHO 文件拷贝失败 
IF ERRORLEVEL 0 ECHO 成功拷贝文件

附录1:常用命令的返回值及其代表的意义

backup

0 备份成功 1 未找到备份文件 2 文件共享冲突阻止备份完成 3 用户用ctrl-c中止备份 4 由于致命的错误使备份操作中止

diskcomp

0 盘比较相同 1 盘比较不同 2 用户通过ctrl-c中止比较操作 3 由于致命的错误使比较操作中止 4 预置错误中止比较

diskcopy

0 盘拷贝操作成功 1 非致命盘读/写错 2 用户通过ctrl-c结束拷贝操作 3 因致命的处理错误使盘拷贝中止 4 预置错误阻止拷贝操作

format

0 格式化成功 3 用户通过ctrl-c中止格式化处理 4 因致命的处理错误使格式化中止 5 在提示“proceed with format(y/n)?”下用户键入n结束

xcopy

0 成功拷贝文件 1 未找到拷贝文件 2 用户通过ctrl-c中止拷贝操作 4 预置错误阻止文件拷贝操作 5 拷贝过程中写盘错误

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-09-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档