批處理之 For 循環
1.For 基本用法
FOR %variable IN (set) DO command [command-parameters]
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
在批處理中使用 For 命令時,指定變量%%variable。變量名稱是區分大小寫的,所以 %%i 與 %%I 是不同的。
2.For 的命令擴展
(1)For /D 遍歷目錄
FOR /D %variable IN (set) DO command [command-parameters]
搜尋E盤下所有文件目錄:
代碼實例
@echo off
for /d %%i in (e:/*) do echo %%i
pause
運行結果如下:
e:eclipse-workspace
e:office2013
搜索當前目錄的文件夾:
代碼實例
@echo off
for /d %%i in (*) do echo %%i
pause
(2)For /R 遍歷
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
搜索當前目錄的文件夾:
代碼實例
@echo off
for /r %%i in (*) do echo %%i
pause
運行結果如下:
E:\Backup\Bat_Exce\for\for.bat
E:\Backup\Bat_Exce\for\for_d.bat
E:\Backup\Bat_Exce\for\test.txt
搜F盤的裏的所有文件:
代碼實例
@echo off
for /r f:/ %%i in (*) do echo %%i
pause
運行結果如下:
f:\SoftWare\jdk-12.0.2_windows-x64_bin.exe
f:\SoftWare\eclipse-java-2019-06-R-win32-x86_64.zip
f:\SoftWare\Firefox Setup 70.0b14x64.exe
搜C盤的裏的所有.txt文件:
代碼實例
@echo off
for /r C:/ %%i in (*.txt) do echo %%i
pause
(3)For /L 數字序列
FOR /L %variable IN (start,step,end) DO command [command-parameters]
遞增數字序列
代碼實例
@echo off
for /L %%i in (1,2,10) do echo %%i
pause
運行結果如下:
E:\Backup\Bat_Exce\flower>for_L.bat
1
3
5
7
9
遞減數字序列
代碼實例
@echo off
for /L %%i in (10,-3,0) do echo %%i
pause
運行結果如下:
E:\Backup\Bat_Exce\flower>for_d.bat
10
7
4
1
(4)For /F (eol,skip,delims,tokens,usebackq)
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
有一個test.txt 的文檔,内容如下:
;123,456,478,123456,234567889
qwe.rtyu
wrrttydtyd.yuf
eol的用法:
代碼實例
@echo off
for /f "eol=;" %%i in (test.txt) do echo %%i
pause
運行結果如下:
E:\Backup\Bat_Exce\flower>for_F.bat
qwe.rtyu
wrrttydtyd.yuf
忽略以分號開頭的那些行
skip 的用法:
代碼實例
@echo off
for /f "skip=2" %%i in (test.txt) do echo %%i
pause
運行結果如下:
E:\Backup\Bat_Exce\flower>for.bat
wrrttydtyd.yuf
test1.txt 文本内容如下:
123,456,478,123456,234567889
qwe.rtyu
wrrttydtyd.yuf
delims,tokens 的用法:
代碼實例
@echo off
for /f "delims=, tokens=1,3" %%i in (test1.txt) do echo %%i %%j %%k
pause
運行結果如下:
E:\Backup\Bat_Exce\flower>for.bat
123 478
qwe.rtyu
wrrttydtyd.yuf
“delims=,” 表示以逗號作爲被處理的字符串的分隔符
“tokens=1,3” 表示獲取以逗號作爲分隔符的第一節和第三節内容
代碼實例
@echo off
for /f "delims=,. tokens=2" %%i in (test1.txt) do echo %%i
pause
運行結果如下:
E:\Backup\Bat_Exce\flower>for.bat
456
rtyu
yuf
代碼實例
@echo off
for /f "delims=, tokens=1,*" %%i in (test1.txt) do echo %%i %%j
pause
運行結果如下:
E:\Backup\Bat_Exce\flower>for.bat
123 456,478,123456,234567889
qwe.rtyu
wrrttydtyd.yuf
代碼實例
@echo off
for /f "delims=, tokens=1,3-4,*" %%i in (test1.txt) do echo %%i %%j %%k %%l
pause
運行結果如下:
E:\Backup\Bat_Exce\flower>for.bat
123 478 123456 234567889
qwe.rtyu
wrrttydtyd.yuf
usebackq
指定新语法已在下类情况中使用:
在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 file-set中使用双引号扩起文件名称。
FOR /F ["options"] %%variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %%variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %%variable IN ('command') DO command [command-parameters]
FOR /F "usebackq" %%variable IN ("file-set") DO command [command-parameters]
FOR /F "usebackq" %%variable IN ('string') DO command [command-parameters]
FOR /F "usebackq" %%variable IN (`command`) DO command [command-parameters]