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
)

コマンドウィンドウがクラッシュすると思います。点滅します。

ところで、バッチのデバッグは最悪です。

4

1 に答える 1

3

redirect をエスケープする必要があります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 に答える