Мне нужно написать команду в файле .bat, которая рекурсивно удаляет все папки, начиная с определенной строки. Как я могу этого добиться?
Рекурсивно удалить все папки, начинающиеся с
Ответы (4)
Это полный ответ, который вы ищете:
FOR /D /R %%X IN (certain_string*) DO RD /S /Q "%%X"
где, очевидно, вам нужно заменить certain_string
строкой, с которой начинаются ваши папки.
Это удаляет РЕКУРСИВНО, как вы просили (я имею в виду, что он проходит через все папки и подпапки).
FOR /D /R %%X IN (*.lproj) DO IF /I "%%~xnX" neq "en.lproj" IF /I "%%~xnX" neq "english.lproj" RD /S /Q "%%~fX"
. Объяснение: %%~xnX
равно полному имени каталога. IF /I .. neq "en.lproj"
фильтрует все каталоги, которые равны "en.lproj"
(/I
= без учета регистра). IF могут быть вложенными. В конце концов, я рекурсивно удалил все каталоги, заканчивающиеся на .lproj
, кроме en.lproj
и english.lproj
.
- person Rob W; 11.06.2012
Как насчет:
for /d %a in (certain_string*) do rd /s %a
Это будет работать из командной строки. Внутри командного файла вам, как обычно, придется удвоить %
s:
@echo off
for /d %%a in (certain_string*) do rd /s %%a
rd
, похоже, не расширяет подстановочные знаки сам по себе.
- person Greg Hewgill; 27.11.2009
for /r
или их комбинацию.
- person Greg Hewgill; 27.11.2009
for /d %%x in (*.delme) do rd /s /q "%%x"
, но похоже, что это не работает.
- person Marco Demaio; 22.03.2011
Я думаю, незаконченный. Если вы имели в виду «Рекурсивно спускаться по иерархии каталогов для удаления всех папок, начинающихся с определенной строки», тогда может быть достаточно следующего:
for /f "delims=" %%x in ('dir /b /ad abc*') do rd /s /q "%%x"
Это выполнит рекурсию в дереве каталогов, найдет все папки, начинающиеся с «abc», перебирает этот список и удаляет каждую папку.
Возможно, вам нужно обернуть if exist
вокруг rd
в зависимости от порядка, в котором каталоги найдены и возвращены. В общем, повторение чего-либо и одновременное изменение этого редко бывает хорошей идеей, но иногда это работает :-)
rm -rf - "Имя каталога"
Ex : rm -rf -- "-2096378"
Вышеупомянутая команда удалит папки / каталоги, начинающиеся с - или подстановочных знаков.