CMD の小さなクリーンアップ スクリプトについて

CMD の小さなクリーンアップ スクリプトについて

テキスト ファイルにリストされていないすべてのフォルダー名を削除するコマンド ライン スクリプトがあります。スクリプトでテキスト ファイル内のフォルダーのみを削除したいのですが、何が間違っているのかわかりません。
私のコマンドは次のとおりです。

for /d %%a in ("C:\Users\Administrator\Desktop\Somedir\*") do findstr /i /x /c:"%%~nxa" Cleanup.txt || rd /s /q %%a

テキストファイルには次のような短いフォルダ名が含まれています:

am
ar
bg

誰か助けてくれませんか?

答え1

コマンドラインの場合:

cd "C:\Where\Your\Text\File\Is"
for /f %A in ("Cleanup.txt") do (if exist "C:\Users\Administrator\Desktop\Somedir\%A" rd /s /q "C:\Users\Administrator\Desktop\Somedir\%A")

バッチの場合:

@echo off

set "dir=C:\Users\Administrator\Desktop\Somedir"
set "txt=C:\Where\Your\File\Is\Located\Cleanup.txt"

setlocal enabledelayedexpansion
for /f %%A in (%txt%) do (
    set "del=%%A"
    if exist "%dir%\!del!" rd /s /q "%dir%\!del!" 
)

ループ オプションに何かを追加する予定がない場合は、コマンド ラインでディレクトリを変更することを忘れないでください。私はバッチと変数を使用することを好むので、それを含めました。

関連情報