Wins批处理基本语法

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

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

1、关于批处理

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

2、常用命令

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

C:\>echo 我在博客园
我在博客园

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

①不加echo参数

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

控制台打印:

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

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

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

控制台打印:

我是好人
请按任意键继续. . .

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

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

REM 调用同一目录下的另一个批处理文件test2.bat
call test2.bat

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

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

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

3、 IF语句

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

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

IF "1" = "1" ECHO 相等

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

IF exist c:\test.txt echo text.txt文件存在

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

@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配合使用,根据不同的条件来执行不同的命令组。如:

goto end 
:end 
echo this is the end

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

5、choice命令

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

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

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

控制台打印:

确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]?Y
请按任意键继续. . .

6、FOR 循环

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

for %c in (*.txt) do type %c

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

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

7、综合例子

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

@echo off 
IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT 
IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist

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

@ECHO OFF 
IF EXIST %1 TYPE %1 
IF NOT EXIST %1 ECHO %1 does not exist

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

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

@echo off 
IF "%1" == "A" ECHO XIAO 
IF "%2" == "B" ECHO TIAN 
IF "%3" == "C" ECHO XIN

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

@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 拷贝过程中写盘错误

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端知识铺

前端路由简介以及vue-router实现原理

简单来说路由就是用来跟后端服务器进行交互的一种方式,通过不同的路径,来请求不同的资源,请求不同的页面是路由的其中一种功能。

42660
来自专栏程序员宝库

IntelliJ IDEA 教程设置讲解

IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新...

16340
来自专栏jianhuicode

简单使用babel

要使用babel,首先需要了解用的东西?它是一个用来进行ES6转化到ES5的转码器,从而在现有环境中进行执行。 一、配置文件.babelrc(搬运下) Babe...

22490
来自专栏计算机编程

Vue 单文件组件详解<1>--简单上手

vue 的webpack的结构非常简单,简单的一眼就可以知道每个目录下是干啥的,在components目录下就有属于我们想要详细解析的内容,这两个vue文件即为...

11510
来自专栏小李刀刀的专栏

[译]对《优化浏览器渲染》的补充

ISD Webteam的大布同学(twitter:@tc_bryanzhang)在2010年1月翻译了google Page Speed系列中的Optimize...

33160
来自专栏Aloys的开发之路

Eclipse相关问题

MANIFEST.MF文件 在Eclipse的.classpath和runableX.jar中的MANIFEST.MF文件中都指定了可依赖jar包的顺序,所以只...

32960
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Ansible部署多个PHP应用程序

本教程是关于在Ubuntu 14.04上使用Ansible部署PHP应用程序的系列文章中的第三篇。第一个教程涵盖了部署应用程序的基本步骤; 在第二个教程介绍更高...

13400
来自专栏上善若水

CG007蓝宝书opengl宝典源码编译环境的搭建

无法打开包括文件stdio.h ctype.h ucrtd.lib vs2015新版的小问题,这个问题是由于运行时使用的库文件缺少关键文件。

25540
来自专栏有趣的django

Django搭建blog网站(一)

一、前言 1.1.环境 python版本:3.6 Django版本:1.11.6 1.2.预览效果 最终搭建的blog的样子,基本上满足需求了。框架搭好了,至于...

1.1K80
来自专栏微信终端开发团队的专栏

XCode基本使用及调试技巧

对于初学iOS开发的同学,了解了Objective-C的基本使用后,最关心的应该是如何把OC程序运行起来。由于Xcode的基本使用比较简单,所以本文着重介绍一些...

75470

扫码关注云+社区

领取腾讯云代金券