Вы не можете использовать опцию /S
с командой DELETE
, поскольку это приведет к удалению файла в текущем каталоге и во всех его подкаталогах.
Независимо от этого, именно так я бы выполнил задачу, такчто вы не получите ошибку от команды RMDIR
.Я использую команду IF EXIST
, чтобы определить, является ли это файл или каталог.
@echo off
set "folder=c:\FTP\"
set "keep=keep1"
set "keeptwo=keep2"
cd /d %folder%
for /F "delims=" %%G in ('dir /b') do (
if /I NOT "%%G"=="%keep%" (
if /I NOT "%%G"=="%keeptwo%" (
REM check if it is a directory or file
IF EXIST "%%G\" (
rmdir "%%G" /s /q
) else (
del "%%G" /q
)
)
)
)