不要なフォルダはバッチファイルで削除しよう!

こんにちは!Rhinoです。
今日は久々にバッチファイルを使いましたので、そのご紹介をしたいと思います。
Mayaのプロジェクトを作成した際に色々なフォルダができると思いますが、使わないフォルダもありますよね?仕事によってはそれらを削除して、他者に渡したりすることありませんか?
毎回削除するのがやや面倒でしたので、作ってみようと思いました。
プロジェクトフォルダをドラッグアンドドロップして、scenesフォルダとsourceimagesフォルダ以外のフォルダを全部削除するバッチファイルになります。

@echo off
for /D %%a in ( %1\* ) do (
	if not %%~nxa == scenes if not %%~nxa == sourceimages (
		rd /s /q %%a
	)
)

エコー機能をオフ

標準のコマンドプロンプトでは実行したコマンドを画面に表示するエコーという機能がオンになっていますので、まずはこれをオフにします。

@echo off

ドラッグアンドドロップしたフォルダ内のフォルダの一覧を取得

forループを使ってフォルダの一覧を取得していきます。
forループの構文は以下のようになっています。

for (オプション) %%変数 in (セット) do ( コマンド ) 

今回は対象をフォルダに絞っていますのでオプションに/Dを使用します。
変数名はアルファベット1文字で指定しますのでaとしておきました。
セットにはループの開始から終了するまでの数値が入ります。
バッチファイルの引数%1でドラッグアンドドロップしたフォルダ自体を取得し、\*でフォルダの中のすべてのものにアクセスします。

条件分岐

scenesフォルダとsourceimagesフォルダ以外のフォルダをすべて削除したいので、否定のif文で分岐します。構文は以下のようになります。

if not 条件 ( コマンド )

今回は条件が2つありますので次のようになります。

if not 条件 if not 条件 ( コマンド )

バッチファイルの引数%1ではフルパスになってしまいますが、条件として欲しいのはフォルダ名です。そのため、aという変数にオプション%%~nxを使ってフォルダ名のみを取得して使用します。

フォルダを削除

フォルダを削除するにはrdコマンドを使用します。

rd (オプション) フォルダ

フォルダ中にもファイルやサブフォルダがある可能性がありますのでオプション/sを使用します。
また、削除する際の確認が表示されないようオプション/qの使用しました。

久々のバッチファイルでしたの色々調べちゃいましたw
scenesフォルダ中の中の不要なフォルダを削除したい場合はさらに検索する必要がありますので、チャレンジしてみて下さい。では、また!

コメント

タイトルとURLをコピーしました