Что же случилось с дельтри, и какова его замена?
в более ранних версиях MS-DOS-я хочу сказать версия 7, но я могу ошибаться-там был deltree
команда, которая рекурсивно удаляет все подкаталоги и файлы из заданного пути.
deltree
больше не существует, но del
похоже, не унаследовал способность удалять дерево. del /s
удаляет файлы, но не папки.
как вы легко (т. е. в одной команде) удалить дерево из пакетного файла?
10 ответов:
как уже упоминалось, имеет
/s
переключиться на рекурсивное удаление подкаталогов. Вы можете объединить его с/q
переключитесь на принудительное удаление подкаталога (и его содержимого) без запроса как таковогоrd /s /q c:\foobar
чего всем не хватает, так это
rd
и не точная замена дляdeltree
как казалось бы (почти) каждая страница, возвращенная Гуглом дляwindows deltree
хотелось бы вам верить. Элементdeltree
команда работала для обоих каталогов файлы, что делает его одной удобной, универсальной командой удаления. То есть действительны оба из следующих:deltree /y c:\foobar deltree /y c:\baz.txt
rd
(не удивительно) работает только для каталогов. Таким образом, только первая из этих команд действительна, а вторая дает и ошибку и оставляет файл не удаленным:rd /s /q c:\foobar rd /s /q c:\baz.txt
далее работает только для файлов, а не каталогов, так только вторая команда действительна, в то время как первая выдает ошибку:
del /f /q c:\foobar del /f /q c:\baz.txt
нет встроенного способа удаления файлов и каталогов, как это можно было бы сделать с
deltree
. Используяrd
иdel
индивидуально неудобно в лучшем случае, потому что требуется различать, является ли объект файловой системы (имя файла/папки) файлом или каталогом, что не всегда возможно или практично.вы можете скопировать
deltree
команда из предыдущей ОС, однако это будет только работа на 32-разрядных версиях Windows, так как это 16-разрядная команда DOS (даже в Windows 9x).другой вариант-создать пакетный файл, который вызывает оба
del
иrd
; что-то вроде этого:::deltree.bat @echo off rd %* 2> nul del %* 2> nul
вы бы назвали это так:
deltree.bat /s /q /f c:\foobar deltree.bat /s /q /f c:\baz.txt
это как
rd
иdel
, передавая Аргументы и перенаправляя вывод наnul
чтобы избежать ошибки, что один из них будет неизменно излучать.вы, вероятно, хотите чтобы настроить поведение для размещения или упрощения параметров или разрешить сообщения об ошибках, но даже так, это не идеально и не прямая замена для
deltree
.альтернативой является получение стороннего инструмента, хотя его поиск-это реальное упражнение в создании поисковых запросов.
Он был заменен на команды: RMDIR или RD
удалить все подкаталоги с /S
используйте его тихо с /Q
пример:
RMDIR /S /Q Folder2Delete RD /S /Q Folder2Delete
документы:
https://github.com/ai7/toolbox/tree/master/deltree
deltree v1.01 [Mar 27 2015, 16:31:02] (gcc 4.9.1) Usage: deltree [options] <path> ... Options: -y yes, suppresses prompting for confirmation -s silent, do not display any progress dialog -n do nothing, simulate the operation -f force, no prompting/silent (for rm compatibility) -r ignored (for rm compatibility) Delete directories and all the subdirectories and files in it.
Он принимает подстановочные знаки, и вы можете использовать его как unix rm:
deltree -rf *
$ help rd Removes (deletes) a directory. RMDIR [/S] [/Q] [drive:]path RD [/S] [/Q] [drive:]path /S Removes all directories and files in the specified directory in addition to the directory itself. Used to remove a directory tree. /Q Quiet mode, do not ask if ok to remove a directory tree with /S
В настоящее время вы можете использовать Powershell для выполнения той же задачи:
powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"