Удалить папки кроме одной папки в windows пакетном скрипте? - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть папка

  • C: \ apache
  • C: \ apache112
  • C: \ apache234

У меня есть пакетный скрипт для удаления папки apache (с подстановочными знаками) на диске C.

forfiles /p C:\ /m *apache* /c "cmd /c if @isdir==TRUE rd /s /q @file"

Как удалить папку apache (с подстановочными знаками) на диске C кроме папки c: \ apache?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

За исключением случаев, когда это абсолютно необходимо (например, из-за опции /D), избегайте forfiles, потому что он медленный и ведет себя иначе, чем большинство других команд в отношении подстановочных знаков. Вместо этого используйте стандартный for l oop, например:

rem // Loop through all matching directory:
for /D %%I in ("*apache*") do (
    rem // Utilise a condition for exclusion:
    if /I not "%%~nxI"=="apache" (
        rem // Actually remove the directory, if applicable:
        rd /S /Q "%%~I"
    )
)
0 голосов
/ 05 февраля 2020

Одним из способов было бы изменить ваш шаблон на:

apache?*

Это должно соответствовать чему-либо, начинающемуся с apache, за которым следует хотя бы один символ.

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