Пакетный файл для удаления всех папок в каталоге, кроме указанного списка - PullRequest
3 голосов
/ 21 сентября 2011

Я ищу командный файл, который перейдет в C: \ Documents and Settings \ и удалит все папки, кроме нескольких, которые я хочу сохранить.

Ответы [ 3 ]

4 голосов
/ 21 сентября 2011

Вот хакерство = D

Если у вас есть список путей к папкам в скажем folder.txt, указанном так:

  • C: \ Documents and Settings \ Mechaflash
  • C: \ Documents and Settings \ Мама
  • C: \ Documents and Settings \ Папа

и т.д.. Что вы можете сделать, это временно изменить их на скрытые папки, а затем RMDIR для всех не скрытых папок.

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 голосов
/ 29 сентября 2011

Решение с использованием робокопии:

cd /d "C:\Documents and Settings"
md tmp
robocopy . tmp /E /MOVE /XD folderToKeep1 folderToKeep2 ...
rd /s /q tmp
1 голос
/ 21 сентября 2011
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
)
...