Удалите все файлы и каталоги, кроме одного каталога

Я хочу использовать командную строку Windows для удаления всех файлов и каталогов, кроме одной папки ".svn". Я попробовал сделать это вот так, в два шага (мой рабочий каталог - это папка, которую я хочу очистить):

  1. Сначала удалите все каталоги, кроме ".svn": dir /B /A:D | findstr /V ".svn" | rmdir /Q
  2. Удалить все файлы: del * /F /Q

Шаг 2 в порядке, но на шаге 1 я получаю сообщение «Неверный синтаксис команды». ошибка. Брошено файлом rmdircmd. Кто-нибудь знает, как это сделать? Хорошо: удалите все каталоги, кроме одного.


person Nick V    schedule 15.03.2012    source источник


Ответы (1)


for /f "tokens=*" %i in ('dir /B /A:D') do if ["%i"] neq [".svn"] rd "%i" /f /q

объяснение

цикл for перечисляет выходные данные команды dir. вы должны указать tokens = * на случай, если в имени каталога есть пробелы.

Квадратные скобки и двойные кавычки вокруг if-параметров - это старый прием, позволяющий избежать проблем, если аргумент никогда не получает ничего (или пустой) или содержит пробелы.

Не забудьте удвоить знаки%, если хотите поместить это в cmd-файл

person Dlanod Kcud    schedule 31.08.2016