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


86

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

Ответы:


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"

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>

3

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

del filethatdoesntexist.txt 2>nul

1
Вы пробовали это? Это не работает. Если его нет, я все равно вижу ошибку
dgo

0

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

if exist cddd rmdir cddd

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

Ура.


Чтобы избежать этого запроса, вам нужно добавить / Q в команду rmdir. Если вам нужно удалить все файлы и подкаталоги , вам нужно также / S . Вы не видели приглашения, вероятно, потому, что каталога там не было.
Bemipefe
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.