Windows Batch 學習筆記(二) -- For

批處理之 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]      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值