Удалите каталог и его файлы с помощью командной строки, но не вызывайте ошибку, если она не существует

86

Мне нужна команда Windows для удаления каталога и всех содержащихся в нем файлов, но я не хочу видеть никаких ошибок, если каталог не существует.

Jaywayco
источник

Ответы:

84

Перенаправьте вывод delкоманды на nul. Обратите внимание 2, чтобы указать, что вывод ошибки должен быть перенаправлен. См. Также этот вопрос , и особенно техническую документацию Использование операторов перенаправления команд .

del {whateveroptions} 2>nul

Или вы можете проверить наличие файла перед вызовом del:

if exist c:\folder\file del c:\folder\file

Обратите внимание, что вы можете использовать if exist c:\folder\(с завершающим \), чтобы проверить, c:\folderдействительно ли это папка, а не файл.

ГолезТрол
источник
Попробовал, я все еще получаю «Система не может найти указанный путь»
jaywayco
3
Принудительное рекурсивное удаление, игнорирование ошибок:rmdir /s /q some\where\myFolder 2>nul
crusy
@crusy Очень признателен, но это тот же ответ ( rmdir= rd), который dbenham уже дал ровно 6 лет назад
GolezTrol
60

Либо перенаправить stderr на nul

rd /q /s "c:\yourFolder" 2>nul

Или убедитесь, что папка существует перед удалением. Обратите внимание, что завершение \является критическим в условии IF.

if exist "c:\yourFolder\" rd /q /s "c:\yourFolder"
Dbenham
источник
14
@GolezTrol - Никто из вас не удалил папку по запросу OP. Вы оба сосредоточились на удалении файла.
dbenham
22

Для меня в Windows 10 отлично работает следующее:

if exist <path> rmdir <path> /q /s

qозначает «удалить без запроса» и sозначает «удалить все вложенные папки и файлы в нем».

И вы также можете объединить команду:

(if exist <path> rmdir <path> /q /s) && <some other command that executes after deleting>
Кристофер 2007
источник
3

Вы можете перенаправить stderr на nul

del filethatdoesntexist.txt 2>nul
Бали C
источник
1
Вы пробовали это? Это не работает. Если его нет, я все равно вижу ошибку
dgo
0

Вышеупомянутое появляется в подсказке с Y или N. Итак, вместо этого я использовал следующее, и он отлично работает.

if exist cddd rmdir cddd

Надеюсь, это кому-то поможет.

Ура.

Анджана Сильва
источник
Чтобы избежать этого запроса, вам нужно добавить / Q в команду rmdir. Если вам нужно удалить все файлы и подкаталоги , вам нужно также / S . Вы не видели приглашения, вероятно, потому, что каталога там не было.
Bemipefe