ファイル・フォルダ管理 - バッチファイル
ファイルを先頭N文字のフォルダ毎に分類
これを こうしたい。
\dir → \dir
|- 20170801.csv |- \201708
|- 20170802.csv | |- 20170801.csv
|- 20170803.csv | |- 20170802.csv
|- 20171010.csv | `- 20170803.csv
|- 20171025.csv |- \201710
`- 20171225.csv | |- 20171010.csv
| `- 20171025.csv
`- \201712
`- 20171225.csv
- distribute_left6dir.bat
@@echo off rem 実行フォルダ内にあるCSVを、ファイル名の先頭6文字のフォルダごとに分類 for %%A in (*.csv) do call :Main %%A %%~nxA goto End :Main set bname=%2 set dirname=%bname:~0,6% if not exist %dirname% mkdir %dirname% move %1 %dirname% goto :eof :End pause
バッチファイルではfor文内でのsetが上手くいかないので、関数のように外部化している。
フォルダ構造のみコピー
空のフォルダは除く
xcopy /t コピー元パス コピー先パス
空のフォルダもコピー
xcopy /t /e コピー元パス コピー先パス
大量ファイルを含むディレクトリを高速に削除
ディレクトリを削除する際、エクスプローラから、右クリック→削除 や Deleteキー などで削除すると、まずファイルのリストアップが始まり、これに結構時間がかかる。
[Shift]+[Del]を使うとゴミ箱に移されないで直接削除されるが、リストアップが入るのは変わらない。
コマンドの del を使うと、ユーザーインターフェイスは無くなるが、リストアップが走らなくなるので、高速に削除できる。
問答無用で削除が走るため、安全のため確認を付けたバッチファイル。ここに削除したいフォルダをD&D。
- fast_rmdir.bat
@echo off echo %1 を削除します。元に戻すことはできません。間違えた場合は[×]で終了してください echo pause echo %1 を削除します。最終確認です。 echo pause del /f/s/q %1 > nul rmdir /s/q %1 echo 削除完了 pause

