Попробуйте, убедитесь, что для SEARCHDIR установлено значение реального dir, и заполните keep.txt файлами, которые вы хотите сохранить, по 1 файлу на строку, используя полный путь, включая dir. Если вы не хотите использовать dir, настройте команду DIR /S /B
, чтобы она выводила тот же формат, что и в вашем keep.txt
@echo off
setlocal enabledelayedexpansion
set KEEPFILES=keep.txt
set SEARCHDIR=.\test_folder
SET /a KEEPTHISFILE=2
FOR /f "tokens=*" %%A IN ( 'DIR /S /B %SEARCHDIR%\*' ) DO (
SET /a KEEPTHISFILE=0
for /f "tokens=1,* delims=¶" %%B in ( '"type %KEEPFILES%"') do (
if "%%A"=="%%B" SET /a KEEPTHISFILE=1
)
if "!KEEPTHISFILE!"=="0" (
echo "deleting %%A"
del /f %%A
)
)