Что же случилось с дельтри, и какова его замена?
в более ранних версиях 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.txtrd(не удивительно) работает только для каталогов. Таким образом, только первая из этих команд действительна, а вторая дает и ошибку и оставляет файл не удаленным: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"