Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Рекурсивное удаление папки по полному пути (http://forum.oszone.net/showthread.php?t=346144)

jkadaba 13-08-2020 18:17 2931110

Рекурсивное удаление папки по полному пути
 
Допустим есть у нас папки в текущей директории 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 не айс, их использовать не хотелось бы.

Elven 13-08-2020 18:30 2931113

Дык команда с абсолютными путями и сработает откуда угодно, не понимаю в чем вопрос.

greg zakharov 13-08-2020 18:41 2931115

Elven, в нежелании вводить эти абсолютные пути, нужно полагать. Если предполагалась какая-то одна папка и при этом с очень длинным путём, любой психанёт. А так, если есть sed можно уложиться в однострочник вида:
Код:

robocopy . X:\this\is\very\long\path /l /nfl /njh /njs /ns /nc | sed "1,2d;s/.*/rd \/q\/s &/" | cmd >nul

Iska 13-08-2020 20:22 2931135

Чем не «айс»:
Код:

pushd "C:\proof" && (rd /s /q "test1" "test2" "test3" & popd)
— не понятно.

megaloman 13-08-2020 21:27 2931145

Код:

FOR %%d IN (Тест1 Тест2 Тест3 "Еще один тест") DO Rd /s /q "Z:\Box_In\Длинное имя\%%~d"

greg zakharov 13-08-2020 22:01 2931149

megaloman, тогда уж forfiles:
Код:

forfiles /p X:\this\is\long\path /c "cmd /c if @isdir==TRUE rd /q/s @path" >nul
Iska, не знаю как прочим, но перечислять название папок очень утомительно. Если пара-тройка, конечно, ничего, но если пачка... всё равно что в ногу себе стрелять из дробовика. Пример с sed можно сдобрить регуляркой, отсеивающей какие-то папки по определённому критерию, ровно как и в случае с forfiles можно задать некоторые шаблоны.


Время: 23:35.

Время: 23:35.
© OSzone.net 2001-