経緯
最近では珍しいオートメイション化が全く進んでいない(あとなんかごちゃごちゃしてる)現場があったのですぐ使えるようにソースを記述しておく事にした。
使用用途
1、なんか無駄に使わないファイルがごっそり入ったフォルダから対象を絞るの面倒!
2、運用フォルダから探してる時にうっかり開いたりしたらいやだ!
3、ローカルに丸ごとコピーしたけど見つからないし名前が間際しくて整理に時間が掛かる
そんな限定的な時に使えるコードdeleteFile.bat
@echo off
setlocal enabledelayedexpansion
rem リストファイルのパスを指定します。
set "list_file=list_file.txt"
rem リストファイルが存在するかどうかを確認します。
if not exist "%list_file%" (
echo リストファイルが見つかりませんでした。
pause
exit /b
)
rem リストファイル内のファイル名を読み込みます。
set "found_files="
for /f "delims=" %%f in ('type "%list_file%"') do (
set "found_files=!found_files! %%f"
)
rem カレントディレクトリ内のファイルをリストアップし、削除するかどうかを決定します。
for /f "delims=" %%i in ('dir /b /a-d') do (
rem ファイル名がリストファイル内に存在するかどうかを確認します。
echo !found_files! | findstr /i /r /c:"%%~ni" >nul
if !errorlevel! equ 0 (
echo Keeping "%%i"
) else (
echo Deleting "%%i"
del "%%i"
)
)
endlocal
pause
list_file.txt
deleteFile.bat
list_file.txt
↓に残しておきたいファイルを拡張子含めて記述しておく。
ほんとは前方一致とか検索に幅を持たせたり、batファイルとリストファイルを除外して他のファイルを消すようにしたかったけどこんな限定的な使い道なツールに時間かけたくなかったので妥協。 削除対象を消したいときとかもKeepingとDeleting部分のdelを移動させれば応用できるしちょっとしたツールとして使う分にはいいよね!
注意
・削除なので使う場合はテスト用フォルダを作ってその中で動かしてから使う事!
・誤って削除を行った場合、一切の責任を負いません。