0

これまでバッチ ファイル コードをあまり書く必要がなかったので、テスト バッチ ファイルを作成して、他の人のコードが失敗した理由を理解しようとしています。私のコード:

:DoUntil
type p.txt >> log.txt
if %ERRORLEVEL% EQU 0 goto DoUntil

ECHO %ERRORLEVEL%

p.txt は、log.txt と同様に単純な文字列を含む既存のテキスト ファイルです。

次に、これを 2 回実行してエラーを取得します。

The process cannot access the file because it is being used by another process.

ご想像のとおり。今、私は ERRORLEVEL が設定され、値がエコーによって返されることを期待していました。(エコーには当たらない)

または、「タイプ」の可能な戻り値のリストを取得できる場所はありますか? すべての用語が非常に一般的に使用されているため、このテーマに関するグーグル検索は非常にイライラすることがわかりました。ここで他のいくつかの質問を読みました。これは、サンプル コードの 1 つの問題を修正するのに役立ちましたが、根本的な問題ではありませんでした。

編集:

以下の Jeb の回答は、私の質問への回答には完璧でしたが、私はそれを進めることができませんでした。私たちが持っている問題のコードは次のようなものです:

:DoUntil
type p.txt >> log.txt
if ERRORLEVEL 1 goto DoUntil

したがって、コードは「タイプが失敗した場合は、機能するまで再試行してください」と言おうとしています。型の最後に "|| rem" 句 + 空のステートメントがないことで、if ステートメントは本質的に何もしていないと言っているのでしょうか?

4

2 に答える 2

3

リダイレクトによるエラーを伴うバグ/機能が存在するようです。そのため、エラーコードを取得するにはちょっとしたコツが必要です。

:DoUntil
type p.txt >> log.txt || rem
if %ERRORLEVEL% EQU 0 goto DoUntil

ECHO %ERRORLEVEL%

ここでdbenham によって説明されています

于 2012-06-28T10:42:28.133 に答える