rmdir のエラー コードが返された場合、それを取得する方法が見つかりませんでした。MS-DOS の内部コマンドがエラー コードを返さないようです。誰かがそれを確認できますか?
次のステップを決定するために、これらのコマンドを使用するスクリプトは、コマンドが成功したか失敗したかをどのように認識しますか? 最も簡単な方法は、リターン コードが返された場合にそれを読み取ることです。
前もって感謝します。
rmdir のエラー コードが返された場合、それを取得する方法が見つかりませんでした。MS-DOS の内部コマンドがエラー コードを返さないようです。誰かがそれを確認できますか?
次のステップを決定するために、これらのコマンドを使用するスクリプトは、コマンドが成功したか失敗したかをどのように認識しますか? 最も簡単な方法は、リターン コードが返された場合にそれを読み取ることです。
前もって感謝します。
いいえ、そうではないようです。成功した場合echo %errorlevel%
または失敗した場合、両方のケースで次のrmdir
ようになります。0
c:\pax> mkdir qqq
c:\pax> rmdir qqq
c:\pax> echo %errorlevel%
0
c:\pax> rmdir qqq
The system cannot find the file specified.
c:\pax> echo %errorlevel%
0
その特定のユースケースでは、後でディレクトリの存在を確認するのがおそらく最善です。
if exist dodgy\. rmdir dodgy
if exist dodgy\. echo dodgy directory still exists
興味深いことに、操作を実行するために の別のコピーを呼び出すとcmd.exe
、エラー レベルを取得できます。
c:\pax> mkdir qqq
c:\pax> cmd /c rmdir qqq
c:\pax> echo %errorlevel%
0
c:\pax> cmd /c rmdir qqq
The system cannot find the file specified.
c:\pax> echo %errorlevel%
2
ただし、まったく新しいコマンドインタープリターを起動する必要があるため、ディレクトリを削除した後にディレクトリがなくなったことを単に確認するよりも優れているとは思いません。
md test
2>nul rmdir test&&echo ok||echo err
2>nul rmdir test&&echo ok||echo err
これにより、最初の rmdir には ok が出力され、2 番目には err が出力されます。
rmdir は内部の cmd.exe コマンドであるため、%errorlevel% はおそらく更新されません。
rmdir は、成功または失敗のいずれかで 0 を返しました。エラー コードを返す必要があることは直感的にわかります。ただし、他の内部コマンドは実行します (少なくとも、私がテストした mkdir および dir コマンド)。