様々なスクリプトでファイルを削除する方法が違うので、batでファイルを削除する方法を教えて欲しいです。
またファイル削除する前に確認を入れたいです。
問答無用で削除したいです。
そういった疑問に現役エンジニアの筆者が答えます。
batでファイル削除する時のオプションを知っておきましょう。
windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。
batでファイルを削除する方法
batでファイル削除する基本構文はこうです!
del ファイル名
または以下の構文でも可能です。オプションや機能的にも同じ効果があります。
erase ファイル名
フォルダ削除、サブフォルダまで削除する方法は以下にまとめています。
batでファイルを一括で削除する方法
ファイルを一括削除する方法をまとめます。
del *
これでカレントディレクトリにあるファイルを全て削除できます。
フォルダの中のファイルを一括で削除する
次はフォルダを指定すればどうなるでしょうか?
del ディレクトリ名
フォルダの中のファイルが全てが削除されます。
デフォルトで削除する前に以下のように確認プロンプトが表示されます。
C:\script\test_dir\*、よろしいですか (Y/N)?
yを押せば削除されます。
ファイルを削除する時のオプション
batでファイルを削除する時のオプションをまとめます。
オプション | 意味 |
---|---|
/p | ファイルを削除する前に確認プロンプトを表示する |
/f | 読み取り専用ファイルを強制的に削除する |
/s | フォルダとサブフォルダの該当ファイルを削除する |
/q | ファイル名に*を使用した場合、確認プロンプトを表示しない |
/a | ファイルの属性を指定する |
/aオプションで指定できるファイル属性一覧をまとめます。
属性 | 意味 |
---|---|
A | アーカイブファイル |
D | ディレクトリ |
H | 隠しファイル (hidden) |
I | 非インデックス対象ファイル |
L | リンク(シンボリックリンク) |
R | 読み取り専用 (real only) |
S | システムファイル |
-属性 | 指定以外の属性ファイル |
読み取り専用のファイルを削除する方法
読み取り専用のファイルを削除しようと下のbatファイルを実行します。
del test_読み取り専用.txt
実行結果はアクセス拒否となり削除できません。
C:\script\bat\26_ファイル削除\test_読み取り専用.txt
アクセスが拒否されました。
ここでbatファイルを下のように修正します。
del /f test_読み取り専用.txt
実行結果は削除されました。読み取り専用のファイルを削除するには「/f」オプションを追加します。
フォルダとサブフォルダの該当ファイルを削除する
batファイルと同じ階層に1つのファイル「test1.txt」と2つのフォルダ「test_dir」「test_dir2」があり、両方のディレクトリの中には「test1.txt」があります。
以下のbatファイルを実行します。
del test1.txt
同じ階層の「test1.txt」のみ削除されます。
batファイルを以下の様に修正します。「/s」オプションを付けただけです。
del /s test1.txt
これを実行すると以下の結果になりました。
削除したファイル - C:\script\bat\26_ファイル削除\test1.txt
削除したファイル - C:\script\bat\26_ファイル削除\test_dir\test1.txt
削除したファイル - C:\script\bat\26_ファイル削除\test_dir2\test1.txt
サブフォルダを含め「test1.txt」が削除されています。
複数のファイルを削除する時に確認プロンプトを表示しない
全てのファイルを削除する時に*を使用します。※「del *.txt」など一部を*にする時は別です
del *
その時は確認プロンプトが表示されます。
C:\script\bat\26_ファイル削除\*、よろしいですか (Y/N)?
全部削除する時にプロンプトで確認されるのは安全でありがたいですが、邪魔になる時があります。
自動化する時です。確認プロンプトが表示されてそこで処理が止まってしまいます。
そういった時はbatを以下のように修正します。「/q」オプションをつけるだけです。
del /q *
確認プロンプトなしで削除されました。
自動化していてもここで止まることはありません。
属性を指定して隠しファイルを削除する
隠しファイルを削除しようとすると、見えないので削除できません。
del test_隠しファイル.txt
このbatファイルを実行します。
C:\script\bat\26_ファイル削除\test_隠しファイル.txt が見つかりませんでした。
隠しファイルは見えないようです。
batファイルを以下のように修正します。「/a」オプションで属性を指定 :をつけて隠しファイルである「H」を指定します。
del /a:H test_隠しファイル.txt
このbatファイルを実行すると、なんと隠しファイルでも削除できてしまいました。
日本語が文字化けした時の対処法
batでファイルを削除しようとして、以下のように文字化けの為、出来なかった場合の対処法
C:\script\bat\26_ファイル削除\test_隱ュ縺ソ蜿悶j蟆ら畑.txt が見つかりませんでした。
batファイルの文字コードがUTF-8になっているのが原因です。
文字コードを「ANSI」に変更する事で、問題なく削除可能です。
batでファイルを扱うその他の方法
batでファイル作成する方法
batでファイル削除する方法はわかりました。
ではファイル作成する方法はどうでしょうか?
echo > test1.txt
このbatでファイル作成する事が出来ます。その他のファイル作成のやり方は以下にまとめています。
batでファイル名を変更する方法
ファイル名を変更する場合はどうでしょうか?
rename ファイル名 変更後ファイル名
renameコマンドでファイル名変更可能です。
batでファイル存在チェックする方法
batでファイルの存在をチェックする方法はどうでしょうか?
if exist ファイル名 ( 処理 )
ifとexistでファイルの存在を確認できます。
batでファイルを移動する方法
ファイルを移動する方法はどうでしょうか?
move パス\ファイル名 移動後パス\移動後ファイル名
これでファイルの移動が可能です。