質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

3回答

35525閲覧

batファイル delコマンドに失敗した場合の処理

amaguri

総合スコア227

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2017/01/18 04:22

batファイルにて
ファイルを削除するdelコマンドを使い

処理として
「ファイルが削除できなかった場合エラーラベルに飛ぶ」
というのをやりたいのですが

del ファイル名 では消せますが if not del ファイル名 処理 と書いたのですがうまくいきません

ファイルを削除できなかった時と書くにはどう書けば良いのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

こんな感じですかね

dos

1@echo off 2if exists ファイル名 goto err_not_exists_file 3del ファイル名 4if exists ファイル名 goto err_cannot_delete 5echo ファイルを削除しました 6 7exit 0 8 9:err_not_exists_file 10echo 削除対象のファイルがありません 11exit 1 12:err_cannot_delete 13echo ファイルが削除できませんでした 14exit 2

投稿2017/01/18 04:46

Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaguri

2017/01/18 04:57

なるほど最初に削除対象の確認をすることでの分岐ですね!ありがとうございます
guest

0

"if not del"という書き方はしません。

コマンド実行結果の判断は、本来はERRORLEVEL変数で判断します。
例えば以下のような感じです。

<何かのコマンド> if %errorlevel% == 0 ( <成功時の処理> ) ...

ただしdelコマンドはなぜか成功しても失敗しても戻り値0を返すのでこの手が使えません。

また、「ファイルの削除に失敗」といっても原因は様々です。
なので、以下のようなやり方をしてはどうでしょうか。

・事前にファイルが存在するか否かを確認し、処理を分岐する。
・delコマンドの標準出力と標準エラー出力をファイルに保存し、findstrで文字列を引っ掛けて処理を分岐する。

投稿2017/01/18 04:36

ynakano

総合スコア1894

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaguri

2017/01/18 04:54

回答ありがとうございます。 最初にあるかないかを見るなどで分岐したりするのがいいかもしれないということですね!
ynakano

2017/01/18 04:59

問題になるのがファイルの有無だけであればそうですね。 他のプロセスがファイルを掴んでいるなどの場合はメッセージから判断するしかないかと。
guest

0

DEL ファイル名 IF NOT EXIST ファイル名 処理

はどうですか?

投稿2017/01/18 04:32

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaguri

2017/01/18 04:34

なるほど!削除してから名前を見て判断するということですね!
ynakano

2017/01/18 04:39

これだと"DEL ファイル名"が成功したら"IF NOT EXIST ファイル名"が成立して、削除対象ファイルが最初から存在しない場合"DEL ファイル名"は失敗するけど"IF NOT EXIST ファイル名"が成立、つまり、常に"IF NOT EXIST ファイル名"が成立しませんか?
退会済みユーザー

退会済みユーザー

2017/01/18 04:42

そうですね!確かに、削除が成功しているかの判断しか考えてませんでした。 ファイルがない場合も処理が入って今回の質問とは違いますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問