分类: WINDOWS
2011-08-05 11:10:06
@
::屏蔽后面的命令行,只出现命令执行的结果
@echo off
::关闭全局的回显功能,并且本身echo off命令不显示出来
if
IF [NOT] string1==string2 command
包含字符串的双引号不是语法所必须的, 而只是习惯上使用的一种"防空"字符
if [not] exist [路径\]文件名 待执行的命令
if errorlevel <数字> 待执行的命令
goto语句运行顺序
以下为例
##############################
if exist c:\test.txt goto 1
if not exist c:\test.txt goto 2
echo this line is not run
:2
echo file not exist
:1
echo file exist
###############################
::goto到一个标签后并不会返回到原来位置,而是执行这个标签下面的命令。
上例的执行结果:如果test.txt存在,就跳到:1执行,直到最后,而忽略goto 1
命令行和:1之间的所有命令
for语句
for %%c in (*.txt) do type %%c
%%引导变量
在xp底下,for命令扩展名被起用因此for的功能变得更加强大
FOR /L %variable IN (start,step,end) DO command [command-parameters]
批处理参数:
%[1-9]表示参数,变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示
利用日期来重命名文件:
ren c:\log.txt "%date%log.txt"
字符串截取:
%var:~n,k%
我们在这里对每个参数做个说明:"%var",即我们要从中要截取字符的字符串." ~ "取字
符标志符(我是这么理解的),"n" 我们将其理解为指针,"k"我们将其理解为偏移地址.(注
:指针从零开始计数,偏移地址从1开始计数)
例子:
而系统时间命名文件名就不能简单的%time%,否则就会显示找不到指定的驱动器,因为%time%中分隔时分秒的冒号":"会被认为是驱动器标识,因此只能逐段截取,如 ren 1.txt %time:~0,2%%time:~3,2%%time:~6,2%.txt ,则会显示以hhmmss.txt样式的文件名,如当前时间为17:10:12,则为"171012.txt"。%time:~3,2%表示从第4位(即第3位后)开始截取2位字符 。