批处理的几点特殊用法

1. 批处理自身%0的用法

%0 - 获取批处理自身的完整路径
%~0 - 获取批处理自身的完整路径,并去掉首尾的引号,同%~f0
%~nx0 - 获取批处理自身的文件名及后缀名
%~n0 - 获取批处理自身的文件名
%~x0 - 获取批处理自身的后缀名
%~dp0 - 获取批处理自身的完整路径,不含文件名(网上邻居的批处理只能用这个,%cd%无效
%~sdp0 - 获取批处理自身的完整路径文件名格式
%~d0 - 获取批处理自身的盘符
%~z0 - 获取批处理自身的大小
%~t0 - 获取批处理自身的修改时间

2. if 语句结构

2.1 字符串比较

if语句仅能够对两个字符(串)是否相同、先后顺序进行判断等。
其命令格式为:
IF [/i] [not] string1 compare-op string2 command1 [else command2]
其中,比较操作符compare-op有以下几类:
== - 等于
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
选择开关/i则不区分字符串大小写;选择not项,则对判断结果进行逻辑非。

2.2 存在判断

存在判断的功能是判断文件或文件夹是否存在。
其命令格式为:
IF [NOT] EXIST filename command1 [else command2]

2.3 定义判断

定义判断的功能是判断变量是否存在,即是否已被定义。
其命令格式为:
IF [not] DEFINED variable command1 [else command2]

需要注意的一点是有些情况需要在command前后加上括号来限定范围,比如command里是set语句时:
if "%~1" == "" set CUR_DIR=%~dp0 else set CUT_DIR=%~1
当不带参数执行批处理时CUR_DIR的结果是第1个等号之后所有的内容,包括else在内,解决办法是:
if "%~1" == "" (set CUR_DIR=%~dp0) else (set CUT_DIR=%~1)

Tags:

One Response to “批处理的几点特殊用法”

  1. [...] 十月 8th, 2010 发表评论 阅读评论 来源1. 批处理自身%0的用法%0 – 获取批处理自身的完整路径%~0 – [...]

Leave a Reply


提醒: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。