[前の記事]« BASICのコマンドを教えて!
[次の記事]キーボードマクロ定義を永続させるには? »

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

▲カテゴリー「DEL,ERASE,REN…ファイル削除/復活/移動/名前の変更」索引へ

[XP]サブディレクトリがあったらその中身を削除するバッチ処理

1196.
DELに関しての質問です。
2006年06月29日(木) 17時35分
れおん
●DOS/Windowsのバージョン↓
XP

あるディレクトリ配下の各サブディレクトリに何らかしらのファイルが存在する場合、
それら全てのファイルを削除するBATファイルを作りたいと思っています。

UNIXでしたら以下のように記述すればいいと思うのですが、
BATではどのように記述したらよいのでしょうか?

if [ -f $OUTDT_HOME/$1/*/* ] then
  rm $OUTDT_HOME/$1/*/*
fi

またDELのオプションの/Sと/Qを同時に指定する方法はないのでしょうか。
ワイルドカードを使って各ディレクトリ配下のファイルを削除するのに、
削除確認が出ないようにしたいのですが・・・。

よろしくお願いします。
1197.
Re:DELに関しての質問です。
2006年06月30日(金) 02時47分
otn
>あるディレクトリ配下の各サブディレクトリに何らかしらのファイルが存在する場合、
>それら全てのファイルを削除するBATファイルを作りたいと思っています。

・子ディレクトリ下のファイルを消す
・子ディレクトリは残す
・孫ディレクトリは存在しない
ということですよね。

>UNIXでしたら以下のように記述すればいいと思うのですが、
>if [ -f $OUTDT_HOME/$1/*/* ] then
>  rm $OUTDT_HOME/$1/*/*
>fi

これだとマッチするファイルが複数あるとだめですね。
for f in $OUTDT_HOME/$1/*/*
do rm -f $f
done
かな。

>BATではどのように記述したらよいのでしょうか?

FOR /D %%A IN (%OUTDT_HOME%\%1\*) DO DEL /Q %%A\*

>またDELのオプションの/Sと/Qを同時に指定する方法はないのでしょうか。

DEL /S /Q と指定できます。
もしかしてunix風に、DEL /SQ とか指定したんですか?

>ワイルドカードを使って各ディレクトリ配下のファイルを削除するのに、
>削除確認が出ないようにしたいのですが・・・。

/Q で出ません。
1199.
Re:DELに関しての質問です。
2006年06月30日(金) 09時44分
れおん
otnさん、ありがとうございます。

すみません、質問文が足りませんでした。
条件はこのような感じです。

・子ディレクトリ、孫ディレクトリ・・・が存在する。
・子ディレクトリ、孫ディレクトリ・・・に何かしらのファイルが存在する場合全て消す。
・ファイルを削除する場合、削除確認を表示さない。
・子ディレクトリ、孫ディレクトリ・・・は残す。

FOR /D %%A IN (%OUTDT_HOME%\%1\*) DO DEL /Q /S %%A\*

教えて頂いたFOR文を参考にして↑の様に記述したので、
子ディレクトリ、孫ディレクトリ・・・にあるファイルを削除する場合に削除確認を表示させないということは出来ました。

>もしかしてunix風に、DEL /SQ とか指定したんですか?
恥ずかしながらその通りです。/Q /Sと記述すればよかったのですね。
ありがとうございました。

『子ディレクトリ、孫ディレクトリ・・・にファイルが存在する場合』、全てのファイルの削除を行ってよいかをset /pで判定して、その後全てのファイルを削除するという動作をさせたいのです。

『』でくくった部分以外は再現できたので、後は『』でくくった部分が再現できればよいのですが、どのように記述すればよいのでしょうか。

1200.
Re:DELに関しての質問です。
2006年06月30日(金) 21時22分
otn
>『子ディレクトリ、孫ディレクトリ・・・にファイルが存在する場合』、全てのファイルの削除を行ってよいかをset /pで判定して、その後全てのファイルを削除するという動作をさせたいのです。

dir /s /a-d >NUL 2>NUL %OUTDT_HOME%\%1 || goto NOFILE
set /p ANS=DELETE ALL(Y/N)?
if /i "%ANS%"=="Y" del /s /q %OUTDT_HOME%\%1
:NOFILE

でたぶんいけると思います。
1201.
Re:DELに関しての質問です。
2006年07月03日(月) 09時25分
れおん
otnさん、ありがとうございました。

無事再現できました。
dirで 『/a-d』なんてことができるんですね。
大変勉強になりました。
 
 


カテゴリー「DEL,ERASE,REN…ファイル削除/復活/移動/名前の変更」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

2006年06月29日 17:51に投稿されたエントリーのページです。

ひとつ前の投稿は「BASICのコマンドを教えて!」です。

次の投稿は「キーボードマクロ定義を永続させるには?」です。

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

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