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...