批处理文件删除目录中除指定列表外的所有文件夹

3
我正在寻找一个批处理文件,可以进入C:\Documents and Settings\目录并删除除我想要保留的少数文件夹之外的所有文件夹。
3个回答

4

这里有一个巧妙的方法 =D

如果你有一个文件夹路径列表,比如说在folders.txt中列出:

  • C:\Documents and Settings\Mechaflash
  • C:\Documents and Settings\Mom
  • C:\Documents and Settings\Dad

等等。你可以将它们暂时更改为隐藏文件夹,然后删除所有非隐藏文件夹。

CD "C:\Documents and Settings\"
FOR /F "tokens=*" %%A IN (folders.txt) DO (
 ATTRIB +H "%%A" /S /D
)
FOR /F "USEBACKQ tokens=*" %%F IN (`DIR /B /A:-HD "C:\Documents and Settings\"`) DO (
 RMDIR /S /Q %%A
)
FOR /F "tokens=*" %%A IN (folders.txt) DO (
 ATTRIB -H "%%A" /S /D
)

3
使用robocopy的解决方案:
cd /d "C:\Documents and Settings"
md tmp
robocopy . tmp /E /MOVE /XD folderToKeep1 folderToKeep2 ...
rd /s /q tmp

1
rem the last space character is deliberate
set yourKeepList="abc def "
for /f %%f in ('dir /b/ad "C:\Documents and Settings"') do (
    (echo %yourKeepList% | findstr /v /i "%%f " 1>nul) && rd /q/s %%f
)

我无法使这个正常工作;我确实包含了空格。 - 에이바바
你有收到任何错误吗?还是说它没有删除你预期的目录? - Arun
C:\Documents and Settings>((echo "keepList.txt " | findstr /v /i "test " 1>nul ) && rd /q/s f )系统找不到指定的文件。 - 에이바바

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接