Batch file 使用.bat文件删除除两个文件夹外的所有文件夹
批量Batch file 使用.bat文件删除除两个文件夹外的所有文件夹,batch-file,Batch File,批量 @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 形势 folder1/file1.
@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
形势
- folder1/file1.txt
- folder2/file1.txt
- keep1/file1.txt
- keep2/file1.txt
- file1.txt
任何我缺少的线索。您不能将
/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
)
)
)
)
我假设这就是你想要做的:
@Echo关闭
设置“folder=C:\FTP”
设置“keep=keep1”
设置“keeptwo=keep2”
CD/D“%folder%”2>Nul | |退出/B
Del/F/A/Q*
对于(*)中的/D%%A,如果/I不“%%A”=%keep%%”如果/I不“%%A”=%keep2%”RD/S/Q“%%A”,则执行
暂停
我刚刚尝试了你的代码,但它没有从文件夹keep1和keep2中删除文件,因此它看起来工作正常。你在所有文件夹和根目录中都使用了相同的文件吗?如果我放不同的文件,效果很好。如果我使用相同的文件,它会将它们全部删除。我在所有地方都使用了相同的(空)文件。您不能将/S
选项与删除
命令一起使用。这意味着从当前目录和所有子目录中删除该文件。