2

我正在学习批处理编程的来龙去脉,但遇到了一个小障碍。我正在尝试递归循环遍历目录(和子目录)以找到合适的 .vob 文件。一切都很好,除了我的dir命令正在输出File Not Found. 在命令行中,我可以使用以下命令将错误重定向到遗忘:

dir /b *.vob 2>NUL

然而,在批处理文件中,我看到了死亡的瞬间。

for /R %%G IN (\) DO (
    pushd "%%G"
    for /F "usebackq" %%V in (`dir /b *.vob`) DO (
        echo: Found %%~nV in %%~dpV
    )
    popd
)

将其更改为

for /R %%G IN (\) DO (
    pushd "%%G"
    for /F "usebackq" %%V in (`dir /b *.vob 2>NUL`) DO (
        echo: Found %%~nV in %%~dpV
    )
    popd
)

我假设我的 cmd 窗口崩溃了。闪烁开和关。

顺便说一句,调试批次很糟糕。

4

1 回答 1

3

您需要转义重定向2^>NUL,然后它应该按预期工作。

for /R %%G IN (\) DO (
    pushd "%%G"
    for /F "usebackq" %%V in (`dir /b *.vob 2^>NUL`) DO (
        echo: Found %%~nV in %%~dpV
    )
    popd
)
于 2012-07-27T21:31:55.457 回答