Я долгое время смотрел, но это мой первый вопрос, поэтому я прошу прощения, если я сделаю это неправильно.Рекурсивно удалять папки и исключать определенные из них
Мне нужно рекурсивно удалить все папки и файлы на удаленном компьютере, и я хочу, чтобы определенные папки не удалялись.
Эти исключенные папки перечислены в текстовом файле excludeDirectories.txt
, и в каждой строке есть одно имя папки.
Моя первая попытка - сочетание команд командной строки и использование psexec
. Ниже приведен скрипт. Обратите внимание, я бегу это от пакетной команды, таким образом, двойной %%
:
net use r: \\machine\sharedFolderName
FOR /D %%a IN (R:\*.*) DO (
c:\pstools\psexec cmd /c rmdir /s /q R:\
)
Этот сценарий удаляет все, но я не могу понять, как проверить текстовый файл для текущей папки в цикле, и переходите к следующую папку в цикле FOR
, если файл находится в текстовом файле.
Я потратил несколько дней на это, и у меня возникли проблемы с получением кода для работы, который считывает папки в то, что я могу использовать в операторе IF
и разветвляется из строки psexec
, когда найдено совпадение.
Опять бить мертвую лошадь, что я пытаюсь выполнить:
- Рекурсивный цикл по папкам на
R:
диске - Проверка каждой папки в цикле
FOR
, чтобы увидеть, если он находится в текстовый файл - Если текущая папка в цикле
FOR
находится в текстовом файле, пропустить строку, которая удаляет папку и перейти к следующей папке в циклеFOR
- Я не могу использовать Pow ershell
- Я должен хранить исключенные папки в текстовом файле
Спасибо, сэр. Оно работало завораживающе! Я никогда не мог получить синтаксис правильно. –
Можете ли вы обновить свой ответ, чтобы показать, как это будет работать, если вы хотите исключить папки .svn и их содержимое? – Sjwdavies
@Sjwdavies К сожалению, это не мешает циклу for спускаться в исключенные папки и удалять вложенные папки в нем, но я полагаю, что если вложенные папки .svn-папок имеют согласованные имена, вы можете просто исключить эти имена. – Neil