Удалить все файлы и каталоги, кроме одного каталога - PullRequest
3 голосов
/ 15 марта 2012

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

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

Шаг 2 в порядке, но для шага 1 я получаю «Синтаксис команды неверен».ошибка.Брошенный rmdir cmd.Кто-нибудь знает, как это сделать, ОК: удалить все каталоги, кроме одного.

1 Ответ

0 голосов
/ 31 августа 2016
for /f "tokens=*" %i in ('dir /B /A:D') do if ["%i"] neq [".svn"] rd "%i" /f /q

Объяснение

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...