批处理脚本错误:“此时不期望%% d”

时间:2012-08-23 03:03:11

标签: for-loop batch-file

您好我正在尝试创建一个循环文件​​夹并获取其名称,并在每个文件夹中获取文件的名称。

它始于:

@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命令有关,任何人都有想法?

2 个答案:

答案 0 :(得分:1)

缺少两个括号。这是更正后的代码。

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

答案 1 :(得分: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

由于here

%%G比其他字母更受欢迎。但这不是必需的。

正如我所看到的,for /r path %%H in (*.*) do ()是使用for文件的正确形式。你的脚本错了。您的脚本中必定存在语法错误,请将它们全部发布。

根据您的要求,这只挖掘一层深度:对于根目录下的所有目录,输入它并打印所有文件的名称。它不区分第二级和更深级别的目录。 goto可用于优化此内容。