批处理的常见命令
1、REM 和 :: 加注释
2、ECHO 和 @ 打开回显或关闭回显功能,通常用@echo off
3、PAUSE 暂停
4、GOTO 和 :
5、FIND
6、START
7、pushd 和 popd
8、CALL
9、IF
10、setlocal 与 变量延迟(后面用到for循环会说到)
二:for 循环
一、基本格式
FOR %%variable IN (set) DO command [command-parameters]
参数:FOR有4个参数 /d /l /r /f
1、/d
@echo off
for /d %%s in (*) do (
echo %%s
) >>a.xls
注:当set为*时表示当前目录下的任意目录(文件夹);%%s通常是在for循环中使用变量;echo %%s >>a.xls 表示将%%s追加到a.xls,值得注意的是当>>a.xls在循环里面时和在外面时的结果相同??;set集合可以指定目录,也可以指定选择打印当前目录下的目录
@echo off
for /d %%i in (c:*) do echo %%i
pause
运行会把C盘根目录下的全部目录名字打印出来,而文件名字一个也不显示!
@echo off
for /d %%s in (???) do (
echo %%s
) >>a.xls
就会打印当前目录下文件夹的名字只有1-3个字母的打出来
2、/r
FOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters]
检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树(只列文件夹)。
@echo off
for /R c:\ %%s in (*) do (
echo %%s
) >>1.xls
pause
此时会打印出C盘所有的文件名包括子目录下面的文件名
for /r %%i in (*.exe) do @echo %%i
pause
这个命令那么就会把当前目录和他下面的子目录的全部.exe文件列出来
3 、/l
FOR /L %%variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。
因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生
序列 (5 4 3 2 1)。
for循环对文件夹操作的一些命令
~I - 删除任何引号(“),扩展 %I
%~fI - 将 %I 扩展到一个完全合格的路径名
%~dI - 仅将 %I 扩展到一个驱动器号
%~pI - 仅将 %I 扩展到一个路径
%~nI - 仅将 %I 扩展到一个文件名
%~xI - 仅将 %I 扩展到一个文件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到文件的文件属性
%~tI - 将 %I 扩展到文件的日期/时间
%~zI - 将 %I 扩展到文件的大小
另:
批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 …)
批参数(%n)的替代已被增强。您可以使用以下语法:(看不明白的直接运行后面的例子)
%~1 - 删除引号(“),扩充 %1
%~f1 - 将 %1 扩充到一个完全合格的路径名
%~d1 - 仅将 %1 扩充到一个驱动器号
%~p1 - 仅将 %1 扩充到一个路径
%~n1 - 仅将 %1 扩充到一个文件名
%~x1 - 仅将 %1 扩充到一个文件扩展名
%~s1 - 扩充的路径指含有短名
%~a1 - 将 %1 扩充到文件属性
%~t1 - 将 %1 扩充到文件的日期/时间
%~z1 - 将 %1 扩充到文件的大小
%~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1
扩充到找到的第一个完全合格的名称。如果环境
变量名未被定义,或者没有找到文件,此组合键会
扩充到空字符串