Видаліть каталог та його файли за допомогою командного рядка, але не видавайте помилку, якщо вона не існує


84

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

Відповіді:


82

Перенаправити вихідні дані delкоманди на нуль. Зверніть увагу на 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 Багато вдячний, але це та сама відповідь ( rmdir= rd), яку dbenham вже дав рівно 6 років тому
GolezTrol

59

Або перенаправити stderr на нуль

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

Або переконайтесь, що папка існує перед видаленням. Зверніть увагу, що відставання \є критичним у стані ПЧ.

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

1

Вищезазначене підказує Y або N у підказці. Отже, замість цього я використав наступне, і воно працює чудово.

if exist cddd rmdir cddd

Сподіваюся, це комусь допомагає.

Ура.


Щоб уникнути запиту, вам слід додати / Q до команди rmdir. Якщо вам потрібно видалити всі файли і підкаталоги , вам потрібно також / S . Ви не бачили запиту, можливо, тому, що там не було каталогу.
Беміпефе,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.