批量
@echo off
set folder="c:\FTP\"
set keep="keep1"
set keeptwo="keep2"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (
if /i "%%~ni" NEQ %keep% if /i "%%~ni" NEQ %keeptwo% (rmdir "%%i" /s/q || del "%%i" /s/q)
)
pause
场合
预期结果
我需要保留“keep1”和“keep2”文件夹以及所有包含的文件,但必须删除所有子目录和文件的“folder1”和“folder2”以及“file1.txt”。
当前结果
删除所有文件夹中的所有文件,删除“folder1”和“folder2”,并保留“keep1”和“keep2”
任何线索我都缺少。
答案 0 :(得分:1)
您不能将/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
)
)
)
)
答案 1 :(得分:0)
我假设这是你想要做的:
@Echo Off
Set "folder=C:\FTP"
Set "keep=keep1"
Set "keeptwo=keep2"
CD /D "%folder%" 2>Nul || Exit /B
Del /F/A/Q *
For /D %%A In (*) Do If /I Not "%%A"=="%keep%" If /I Not "%%A"=="%keep2%" RD /S/Q "%%A"
Pause