Windows批处理编程

由于经常会碰到批处理文件,因此尝试去学习了下批处理编程。
原文见这里,Guide to Windows Batch Scripting

::关闭回显
@echo off

::setlocal保证变量是局部而不会覆盖全局
setlocal enableextensions

::该批处理文件名,不包括后缀
SET me=%~n0

::所在目录的绝对路径
SET parent=%~dp0

::去掉参数(参数包括批处理文件名,为第0个参数)的引号
set myvar=%~1

::给参数去引号并加上绝对路径
set myvar=%~f0

::所在目录的绝对路径
set myvar=%~dp1

::该批处理文件名,包括后缀
set myvar=%~nx0
echo %myvar%

::/A开关表示等号右侧为一个数学表达式
set /A myvar=1+2

::使用errorlevel变量检查上个命令的执行情况
somefile.exe
if %errorlevel% equ 9009 (
    echo error - somefile.exe not found in your path
)

::条件执行,如果前面的命令执行成功则执行后者
somefile.exe && echo somefile.exe succeeded!

::失败则执行后者
SomeCommand.exe || ECHO SomeCommand.exe failed with return code %ERRORLEVEL%

::执行失败则退出,/B开关表示仅仅退出当前script的执行环境而不是命令提示程序
SomeCommand.exe || EXIT /B 1

::同上,:EOF是一个内置label
SomeCommand.exe || GOTO :EOF

::命令的错误码应该定义为2的幂,便于一个返回的错误码标示多个问题
SET /A errno=0
SET /A ERROR_HELP_SCREEN=1
SET /A ERROR_SOMECOMMAND_NOT_FOUND=2
SET /A ERROR_OTHERCOMMAND_FAILED=4

::变量可以使用^|=进行位或(bitwise or)
SomeCommand.exe
IF %ERRORLEVEL% NEQ 0 SET /A errno^|=%ERROR_SOMECOMMAND_NOT_FOUND%

OtherCommand.exe
IF %ERRORLEVEL% NEQ 0 (
    SET /A errno^|=%ERROR_OTHERCOMMAND_FAILED%
)

EXIT /B %errno%
批处理的语句及用法 例 .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语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。 ===========================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值