Windows 批处理脚本指南: 循环语句
2019-06-12 本文已影响0人
ettingshausen
在集合中遍历条目是脚本的常见任务。它可以遍历目录中的文件,或者一次读取一行文本。
传统的GOTO语句
早期版本的DOS的老方法是使用标签和GOTO语句。虽然它对于通过命令行参数循环很有用,但现在已经不再使用了。
:args
SET arg=%~1
ECHO %arg%
SHIFT
GOTO :args
FOR
遍历文件或者文本更现代的方法是使用for
命令。在我看来,for
是DOS最强大的命令,也是最不常使用的命令之一。
FOR命令使用一个特殊的变量语法%
,后跟一个字母,如%I
。当批处理文件中使用此语法时,略有不同,需要两个百分号%%I
。在编写脚本时,这是一个常见的错误来源。如果for循环因为语法错误退出,确认是否使用了%%I
。
遍历文件
FOR %I IN (%USERPROFILE%\*) DO @ECHO %I
遍历文件夹
FOR /D %I IN (%USERPROFILE%\*) DO @ECHO %I
递归遍历%TEMP%
下所有的文件
FOR /R "%TEMP%" %I IN (*) DO @ECHO %I
递归遍历%TEMP%
下所有的文件夹
FOR /R "%TEMP%" /D %I IN (*) DO @ECHO %I
一个例子
:: Name: del-overlays.cmd
:: Purpose: delete overlay folder in each module
:: Author: ettingshausen
:: Revision: 2017/12/19 - initial version
::
@ECHO OFF
SET parent=%~dp0
FOR /D %%I IN (%parent%*) DO RD /S /Q %%I\overlays
EXIT /B 0