0

それで、私はしばらくの間これを理解しようとしていました、しかし何も私に来ませんでした。小さなケースに絞り込みましたので、感想をお聞かせください。

ファイルのディレクトリ(1-a.txtと1-b.txt)と次のようなバッチファイルがあります。

for %%X in (1) do ^
fc %%X-a.txt %%X-b.txt > tmp.txt &^
if errorlevel 0 (echo 5) else (echo 6) &^
echo 7

基本的に、ファイルが同じ場合は5をエコーし​​、ファイルが異なる場合は6、7をエコーし​​ます。ただし、常に5をエコーし​​ます。エコー7は完全に無視されます。

何かご意見は?

4

1 に答える 1

2

if errorlevelエラーレベルが少なくとも0の場合はtrueです。これは常に以上の比較です。

C:\>help if
Performs conditional processing in batch programs.

...

  ERRORLEVEL number Specifies a true condition if the last program run
                    returned an exit code equal to or greater than the number
                    specified.

通常、ブランチを切り替えることができます。

if errorlevel 1 (echo 6) else (echo 5)

あなたの場合、ステートメントをグループ化するために括弧を使用することもお勧めします。

for %%X in (1) do (
  fc %%X-a.txt %%X-b.txt > tmp.txt
  if errorlevel 1 (echo 6) else (echo 5)
  echo 7
)

プログラム呼び出し後の明示的なオプションとしてif、前のコマンドの結果に応じて別のコマンドを実行する演算子もあります。

fc %%X-a.txt %%X-b.txt > tmp.txt && echo 5 || echo 6
于 2012-06-28T22:47:51.983 に答える