1. 编码规范害死人^^
SET YEAR = 2006
ECHO %YEAR%
上面这段代码,虽然看上去干净整洁,但却无效,echo的时候啥也没输出。
经过比较其他正常批处理文件后发现,set的=前后不能有空格,晕~
也就是说要改成SET YEAR=2006 就对了
2. 按指定格式取得当前日期
REM 通过把系统定义的%DATE%变量,按照“/”符号拆分,分别得到年月日。
FOR /F "tokens=1,2,3,4 delims=/" %%I IN ("%DATE%") DO SET YEAR=%%I&& SET MONTH=%%J&& SET DAY=%%K
REM 使用年月日按指定格式组合成新的日期。
SET TODAY="%YEAR%-%MONTH%-%DAY%"
3. 取得包含或不包含关键词的文件列表
dir /b | find "XXX" 取得包含关键词XXX的文件名列表
dir /b | find /v "XXX" 取得不包含关键词XXX的文件名列表
4. 将信息保存或添加到文件
for/? > for.txt 取得包含FOR函数的说明的文件
dir /b > list.txt 取得当前目录下的文件列表
tree /f > tree.txt 取得当前目录结构文件
dir /b /s | find "XXX" > find.txt 取得当前目录及其所有子目录下含有关键词XXX的文件名全路径列表的文件
echo VARNAME = %VARNAME% >> vars.txt 执行一次在文件末尾增加一行echo输出内容。
5. 对文件列表中的文件进行统一操作
文件列表就是一个TXT文件,每行有一个文件名,可以是全路径或相对路径。
通过以上技巧3,4可以得到这样的文件列表,也可以自己编辑出这样的列表。
为了提高效率和自动化,可以对列表中的文件进行统一操作,如删除,复制,改名,移动等等,只要是可以接受文件名作为参数的操作都可以。
以删除为例:
FOR /F %%I IN (del.txt) DO
6. 组合命令:&、&&、||的用法
&,连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败。
如:copy a.txt b.txt /y & del a.txt
&&,把它前后两个命令组合起来当一个命令来用,从前往后依次执行,一旦发现出错后将不继续执行后面剩下的命令。
如:dir c:/ > a.txt && dir d:/ >> a.txt
||,在执行多条命令时,当遇到一个执行正确的命令就退出此命令组合,不再继续执行下面的命令。
如:dir 2006*.h || echo Didn't exist file 2006*.h & pause & exit
7. 在批处理中使用参数
%1, %2, %3 … 分别代表调用批处理命令时所用的参数。
8. 删除文件
删除文件前最好判断下文件是否存在,如
if exist C:/AD/*.gif
如果删除时需要确认的话,可以用如下方法解决
echo y |