[英]Batch script for loop
我在批處理腳本中遇到了for循環問題。 當我嘗試:
for /f "delims=;" %g in ('dir') do echo %g%
我看到這個
'dir' is not recognized as an internal or external command,
operable program or batch file.
我錯過了某事嗎? 為什么Windows命令不起作用?
不要那樣做 使用for /f
遍歷dir
輸出會遇到各種各樣的問題。 而是只使用
for %g in (*) do @echo %g
在您的問題中,您說echo %g%
是錯誤的(尾隨的%
將按字面值返回)。
將命令直接鍵入命令提示符時,請使用:
for /f "delims=" %g in ('dir /B') do echo %g
在批處理文件中使用時for
您需要為其變量加%
:
for /f "delims=" %%g in ('dir /B') do echo %%g
選項delims=;
沒有任何意義,因為dir
沒有給出用分號分隔的列表,因此我停用了delims
。
/B
開關將dir
輸出更改為純格式(無頁眉和頁腳,僅包含文件和dir.s)。
看來%comspec%
變量已為空或已更改,並且找不到cmd.exe
在運行的機器上進行測試以查看錯誤,並刪除第2行以使其正常工作。
@echo off
set comspec=c:\aaa
for /f "delims=;" %%g in ('dir') do echo %%g
pause
很有意思的是,cmd.exe的路徑已緩存。
以下兩個腳本是相同的,只是命令的順序有所更改
此批處理文件將失敗,既for
命令
@echo off
set comspec=c:\aaa
for /f "delims=;" %%g in ('dir') do echo %%g
pause
set "comspec=%windir%\System32\cmd.exe"
for /f "delims=;" %%g in ('dir') do echo %%g
pause
該批處理文件將對命令都for
。
@echo off
set "comspec=%windir%\System32\cmd.exe"
for /f "delims=;" %%g in ('dir') do echo %%g
pause
set comspec=c:\aaa
for /f "delims=;" %%g in ('dir') do echo %%g
pause
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.