2012-08-23 79 views
0

嗨我試圖創建一個循環,將通過文件夾並取其名稱,並在每個文件夾中將獲得文件的名稱。批處理腳本錯誤:「%% d此時不是預期的」

@echo off 
setlocal enabledelayedexpansion 
for /d %%d in (Folder*) do 
    for %%f in ("%%d"\*.bla) do (
"command list" 
) 

我回來在開始時反應::

%%d was unexpected at this time 

我猜它得到與SETLOCAL命令來執行,任何人有一個想法

它開始?

+0

缺少'('在第一個'do'之後並且相應的關閉之一 – wmz

回答

1

它缺少兩個括號。這是更正後的代碼。

@echo off 
setlocal enabledelayedexpansion 
for /d %%d in (Folder*) do (
    for %%f in ("%%d"\*.bla) do (
     rem "command list" 
     echo %%f 
    ) 
) 
0

我已經測試過下面的腳本工作。

@echo off 
set parent=%1 

echo Beginning from %parent%... 
for /d %%G in ("%parent%"\*) do (
    echo Folder: "%%G" 
    set child=%%G 
    echo %child% 
    for /r %child%\ %%H in (*.*) do (
     echo File: "%%H" 
    ) 

) 
pause. 

使用根路徑作爲參數運行:myscript.bat C:\Windows

%%G比其他字母更喜歡,因爲here。但這不是必需的。

正如我所見,for /r path %%H in (*.*) do()是使用for作爲文件的正確形式。你的腳本是錯誤的。腳本中必須有一些語法錯誤,請將它們全部發布。

按照您的要求,這隻能深入一層:對於根目錄下的所有目錄,輸入它並打印所有文件的名稱。它不會區分第二層和更深層次的目錄。可以使用goto來改善這一點。