Ответ 1
Как уже упоминалось, команда rd
имеет переключатель /s
для рекурсивного удаления подкаталогов. Вы можете объединить его с переключателем /q
для принудительного удаления подкаталога (и его содержимого) без запроса как такового
rd /s /q c:\foobar
Что не хватает, так это то, что rd
не является точной заменой deltree
как казалось бы (почти), каждая страница, возвращаемая Googling для 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
работает только для файлов, а не для каталогов, поэтому только вторая команда действительна, а первая дает ошибку:
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
.
Альтернативой является получение стороннего инструмента, хотя найти его - это реальное упражнение в поисковой обработке.