Показать полную графическую версию : Рекурсивное удаление папки по полному пути
Допустим есть у нас папки в текущей директории test1, test2 и test3. Они одинаково хорошо удаляются командами:
rd /s /q test1 test2 test3
rd /s /q C:\proof\test1 C:\proof\test2 C:\proof\test3
То есть текущей папкой является C:\proof. Как удалить папки из другой папки, не меняя рабочей папки, по их полному (понятное дело) пути? То есть cd и pushd не айс, их использовать не хотелось бы.
Дык команда с абсолютными путями и сработает откуда угодно, не понимаю в чем вопрос.
greg zakharov
13-08-2020, 18:41
Elven, в нежелании вводить эти абсолютные пути, нужно полагать. Если предполагалась какая-то одна папка и при этом с очень длинным путём, любой психанёт. А так, если есть sed можно уложиться в однострочник вида:
robocopy . X:\this\is\very\long\path /l /nfl /njh /njs /ns /nc | sed "1,2d;s/.*/rd \/q\/s &/" | cmd >nul
Чем не «айс»:
pushd "C:\proof" && (rd /s /q "test1" "test2" "test3" & popd)
— не понятно.
megaloman
13-08-2020, 21:27
FOR %%d IN (Тест1 Тест2 Тест3 "Еще один тест") DO Rd /s /q "Z:\Box_In\Длинное имя\%%~d"
greg zakharov
13-08-2020, 22:01
megaloman, тогда уж forfiles:
forfiles /p X:\this\is\long\path /c "cmd /c if @isdir==TRUE rd /q/s @path" >nul
Iska, не знаю как прочим, но перечислять название папок очень утомительно. Если пара-тройка, конечно, ничего, но если пачка... всё равно что в ногу себе стрелять из дробовика. Пример с sed можно сдобрить регуляркой, отсеивающей какие-то папки по определённому критерию, ровно как и в случае с forfiles можно задать некоторые шаблоны.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.