windows批處理for迴圈用法

2021-06-22 17:04:35 字數 2765 閱讀 4534

windows批處理for迴圈用法

注意 空格+ ^  符號 用於將一行寫不下的windows bat批處理程式分成多行完成。

for /l %%i in (1,1,5) ^

do echo %%i  ^     

echo "done"

1 for迴圈 

for迴圈的使用有多種,具本可在cmd中鍵入for /?檢視幫助檔案。但以下三種格式在實際使用中常用到。 

1.1 for %%i in (…) do  

此類迴圈使用最常見,定義的變數直接取代in列表中的值,如下所示: 

for %%i in (475 515 59 67 74 795 102 122) do ( 

amr_nb_enc.exe  -dtx  mr%%i enc_in\1.pcm  enc_out\1_%%i_1.cod ) 

這就是乙個amr全部速率編碼的例項,它等價於以下批處理: 

amr_nb_enc.exe  -dtx  mr475 enc_in\1.pcm  enc_out\1_475_1.cod  amr_nb_enc.exe  -dtx  mr515 enc_in\1.pcm  enc_out\1_515_1.cod  amr_nb_enc.exe  -dtx  mr59 enc_in\1.pcm  enc_out\1_59_1.cod  amr_nb_enc.exe  -dtx  mr67 enc_in\1.pcm  enc_out\1_67_1.cod  amr_nb_enc.exe  -dtx  mr74 enc_in\1.pcm  enc_out\1_74_1.cod  amr_nb_enc.exe  -dtx  mr795 enc_in\1.pcm  enc_out\1_795_1.cod  amr_nb_enc.exe  -dtx  mr102 enc_in\1.pcm  enc_out\1_102_1.cod  amr_nb_enc.exe  -dtx  mr122 enc_in\1.pcm  enc_out\1_122_1.cod  

1.2 for /l %%i in (start, step, end) do 

此迴圈類似於c語言中的for迴圈,它將依據in列表中的表示式生成乙個序列,如下所示: 

for /l %%i in (1, 1, 5) do ( 

amr_lost.exe  enc_out\1_122_1.cod dec_in\1_122_1_%%i.dec  1 %%i 1 ) 

%%i 將生成為如下序列(1 2 3 4 5),以上批處理等價於: 

amr_lost.exe  enc_out\1_122_1.cod dec_in\1_122_1_1.dec  1 1 1  amr_lost.exe  enc_out\1_122_1.cod dec_in\1_122_1_2.dec  1 2 1  amr_lost.exe  enc_out\1_122_1.cod dec_in\1_122_1_3.dec  1 3 1  amr_lost.exe  enc_out\1_122_1.cod dec_in\1_122_1_4.dec  1 4 1  amr_lost.exe  enc_out\1_122_1.cod dec_in\1_122_1_5.dec  1 5 1  

類似,(5, -1, 1)將生成序列(5 4 3 2 1)。

1.3 for /r path_name %%i in (file_type) do  

此批理多用來完成特定資料夾下指定檔案的搜尋。以c:\windows資料夾為例,我們可以通過以下批處理完成該目錄下(包括其下的子目錄)所有exe檔案的搜尋: 

for /r c:\windows %%i in (*.exe) do ( echo %%i >> file_list.txt ) 

結果為: 

c:\windows\alcmtr.exe  c:\windows\alcwzrd.exe  c:\windows\btwieproxy.exe  c:\windows\explorer.exe  c:\windows\hh.exe  c:\windows\miccal.exe  c:\windows\notepad.exe  c:\windows\regedit.exe  c:\windows\regjpwb.exe  c:\windows\rthdcpl.exe  

c:\windows\rtkaudioservice.exe  c:\windows\rtlcpl.exe  c:\windows\rtlupd.exe  c:\windows\skytel.exe  c:\windows\soundman.exe  c:\windows\taskman.exe  c:\windows\twunk_16.exe  c:\windows\twunk_32.exe  c:\windows\unvise32.exe  c:\windows\vncutil.exe  c:\windows\winhelp.exe  c:\windows\winhlp32.exe  c:\windows\xinstaller.exe  

c:\windows\$hf_mig$\kb2079403\spuninst.exe  c:\windows\$hf_mig$\kb2079403\update\update.exe  c:\windows\$hf_mig$\kb2115168\spuninst.exe  c:\windows\$hf_mig$\kb2115168\update\update.exe  …… 

注意:path中不能有空格。 

以program files資料夾為例,執行是失敗的,這時,可以通過如下的方法執行: 

cd c:\program files 

for /r %%i in (*.exe) do ( echo %%i >> file_list.txt ) 

結果為:

windows批處理for迴圈的坑

太長不看版 windows批處理的for,可以使用tokens和delims來讀出指定列的內容,但是,當分隔符緊緊相連的時候,token會按順序取下乙個不是分隔符的字元作為內容,而不是取null。詳情 準備乙個測試檔案,叫test.txt如下 1,2,3,4,5 1,2,3,4,5 1,2,3,4,...

批處理 迴圈

基本格式 for 變數 in 集 do 命令 注 在命令列中直接使用時,變數前是乙個百分號 for d variable in set do command 例1 輸出指定目錄下的所有資料夾 for d a in c users do echo a例2 輸出當前目錄下資料夾名為1 3個字元的目錄 f...

Windows批處理(一)

批處理是一系列可執行的命令集合揉成的乙個檔案,有點類似於日常開發中的乙個類。window平台下批處理副檔名一般為bat或者cmd 先介紹幾個簡單的命令 這是注釋命令,和開發中的 效果是一樣的,都是單行注釋。有效標號 冒號後面跟乙個變數字串,一般用於goto語句的跳轉。例如 functiona 和 a...