1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

リストアップしたファイル以外を消すWindowsバッチ

Last updated at Posted at 2024-03-30

経緯

最近では珍しいオートメイション化が全く進んでいない(あとなんかごちゃごちゃしてる)現場があったのですぐ使えるようにソースを記述しておく事にした。

使用用途

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を移動させれば応用できるしちょっとしたツールとして使う分にはいいよね!

注意

・削除なので使う場合はテスト用フォルダを作ってその中で動かしてから使う事!
・誤って削除を行った場合、一切の責任を負いません。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?