[前の記事]« ファイルから読み込んだ数値を演算するには?
[次の記事]各行の先頭2バイトをチェックしてデータを複数ファイルに振り分けたい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「DEL,ERASE,REN…ファイル削除/復活/移動/名前の変更」索引へ
▲カテゴリー「IF(結果の検査、条件分岐)」索引へ

[NT系]ファイルの削除が成功したかどうかを検出するには

666.
%errorlevel%について
2004年07月23日(金) 22時33分
SuperEntertainer
Windows XP上でDOSバッチを作成していて質問があります。

バッチの内容は以下の通りです。

DELコマンドであるファイルを削除します。

ファイルが削除できても、削除できなくても%errorlevel%が0で返ってくるのですが、
これは正常な動作なのでしょうか。

また、削除の結果を取得する方法はないのでしょうか。
667.
Re:%errorlevel%について
2004年07月24日(土) 15時04分
oo
>ファイルが削除できても、削除できなくても%errorlevel%が0で返ってくるのですが、
>これは正常な動作なのでしょうか。

そのようです。

>また、削除の結果を取得する方法はないのでしょうか。

消そうとしたけどファイルが無かったエラーを知りたいのか、存在するファイルが何らかの理由で消せなかったことを知りたいのか、消せなかった理由まで知りたいのか、結果といっても色々です。

if exist %FILENAME% ( 
 del %FILENAME%
 if exist %FILENAME% echo ファイルが消せなかった
) else echo ファイルが無かった
668.
Re2:%errorlevel%について
2004年07月24日(土) 23時05分
SuperEntertainer
回答ありがとうございます。

>>ファイルが削除できても、削除できなくても%errorlevel%が0で返ってくるのですが、
>>これは正常な動作なのでしょうか。

>そのようです。

>>また、削除の結果を取得する方法はないのでしょうか。

>消そうとしたけどファイルが無かったエラーを知りたいのか、
>存在するファイルが何らかの理由で消せなかったことを知りたいのか、
>消せなかった理由まで知りたいのか、結果といっても色々です。

削除対象ファイルが別アプリで開かれていたりして、
アクセスエラーで削除できないときを判断することは可能なのでしょうか。

同じような状況で別アプリで開かれているファイルに対して、
上書きコピーが失敗したときなども、判断可能なのでしょうか。

ご存じでしたら、よろしくお願いします。


実現したいバッチ。
=======================================================================

echo "START" > RESULT.txt
if exist %FILENAME% (
  del %FILENAME%
  if %ファイルが削除できなかった% (
    echo "ファイルが削除できませんでした。" >> RESULT.txt
  ) else (
    copy %FILENAME% %FILENAME_DEST%
    if %ファイルがコピーできなかった% (
      echo "ファイルがコピーできませんでした。" >> RESULT.txt
    )
  )
)
echo "END" >> RESULT.txt

=======================================================================
こういう内容のバッチを実現したいと思っています。


>if exist %FILENAME% ( 
> del %FILENAME%
> if exist %FILENAME% echo ファイルが消せなかった
>) else echo ファイルが無かった

671.
Re3:%errorlevel%について
2004年07月26日(月) 00時37分
oo
>回答ありがとうございます。


>削除対象ファイルが別アプリで開かれていたりして、
>アクセスエラーで削除できないときを判断することは可能なのでしょうか。

>同じような状況で別アプリで開かれているファイルに対して、
>上書きコピーが失敗したときなども、判断可能なのでしょうか。

>ご存じでしたら、よろしくお願いします。

del %FILENAME% >%TEMPFILE% 2>&1
FIND "別のプロセスが使用中です。" %TEMPFILE% >NUL && (
 別のプロセスが使用中のときの処理
)
FIND "アクセスエラーのとき出る文言" %TEMPFILE% >NUL && (
 アクセスエラーのときの処理
)

みたいな感じで、エラーメッセージを調べてやればいいと思います。&& を使わないで IF %ERRORLEVEL%==0 でもいいし。
コピーの時もおなじ。
676.
Re4:%errorlevel%について
2004年07月26日(月) 21時04分
SuperEntertainer
回答ありがとうございます。

あすにでも、試してみます。

>>回答ありがとうございます。
>>

>>削除対象ファイルが別アプリで開かれていたりして、
>>アクセスエラーで削除できないときを判断することは可能なのでしょうか。
>>
>>同じような状況で別アプリで開かれているファイルに対して、
>>上書きコピーが失敗したときなども、判断可能なのでしょうか。
>>
>>ご存じでしたら、よろしくお願いします。

>del %FILENAME% >%TEMPFILE% 2>&1
>FIND "別のプロセスが使用中です。" %TEMPFILE% >NUL && (
> 別のプロセスが使用中のときの処理
>)
>FIND "アクセスエラーのとき出る文言" %TEMPFILE% >NUL && (
> アクセスエラーのときの処理
>)

>みたいな感じで、エラーメッセージを調べてやればいいと思います。&& を使わないで IF %ERRORLEVEL%==0 でもいいし。
>コピーの時もおなじ。

 
 
 


カテゴリー「DEL,ERASE,REN…ファイル削除/復活/移動/名前の変更」索引へ
カテゴリー「IF(結果の検査、条件分岐)」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2004年07月23日 11:17に投稿されたエントリーのページです。

ひとつ前の投稿は「ファイルから読み込んだ数値を演算するには?」です。

次の投稿は「各行の先頭2バイトをチェックしてデータを複数ファイルに振り分けたい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート