Как удалить все файлы и папки в папке с помощью вызова cmd - PullRequest
71 голосов
/ 01 октября 2009

Я использую Windows.

Я хочу удалить все файлы и папки в папке с помощью системного вызова.

Я могу позвонить так:

>rd /s /q c:\destination
>md c:\destination

Ты знаешь более легкий путь?

Ответы [ 9 ]

115 голосов
/ 01 октября 2009

Нет, я не знаю ни одного.

Если по какой-то причине вы хотите сохранить исходный каталог (ACL и т. Д.) И вместо этого действительно хотите его очистить, вы можете сделать следующее:

del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"

При этом сначала удаляются все файлы из каталога, а затем рекурсивно удаляются все вложенные каталоги, но в целом сохраняется каталог верхнего уровня как есть (за исключением его содержимого).

Обратите внимание, что в пакетном файле вам нужно удвоить % в цикле for:

del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
30 голосов
/ 11 октября 2012

del c:\destination\*.* /s /q работал для меня. Я надеюсь, что это работает и для вас.

26 голосов
/ 20 ноября 2014

Я думаю, что самый простой способ сделать это:

rmdir /s /q "C:\FolderToNotToDelete\"

Последнее "\" в пути является важной частью.

11 голосов
/ 16 февраля 2017

Да! Используйте Powershell:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
11 голосов
/ 24 января 2014

Если имена подпапок могут содержать пробелы, вам необходимо заключить их в экранированные кавычки. В следующем примере это показано для команд, используемых в командном файле.

set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
4 голосов
/ 10 ноября 2016

Для удаления файла:

del PATH_TO_FILE

Чтобы удалить папку со всеми файлами в ней:

rmdir /s /q PATH_TO_FOLDER

Удалить все файлы из определенной папки (не удаляя саму папку) немного сложнее. del /s *.* не может удалять папки, но удаляет файлы из всех подпапок. Итак, нужны две команды:

del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"

Вы можете создать сценарий для удаления всего, что вы хотите (папка или файл), как это mydel.bat:

@echo off
setlocal enableextensions

if "%~1"=="" (
    echo Usage: %0 path
    exit /b 1
)

:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1

:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%

Несколько примеров использования:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
1 голос
/ 27 мая 2014

Один простой вариант в одну строку - создать пустой каталог где-нибудь в вашей файловой системе, а затем использовать ROBOCOPY (http://technet.microsoft.com/en-us/library/cc733145.aspx) с переключателем /MIR для удаления всех файлов и подпапок. По умолчанию robocopy не копирует защиту, поэтому списки ACL в корневой папке должны оставаться неизменными.

Также, вероятно, необходимо установить значение для переключателя повторных попыток, /r, поскольку число повторных попыток по умолчанию равно 1 миллиону.

robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
0 голосов
/ 20 июня 2016

Перейдите в родительский каталог

Line1 pushd "Родительский каталог"

Удалить вложенные папки

Линия 2 рд / с / кв. 2> NUL

https://superuser.com/questions/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt

0 голосов
/ 08 июля 2014

У меня была индексная папка с 33 папками, в которых нужно было удалить все файлы и подпапки. Я открыл командную строку в папке index и затем использовал эти команды:

for /d in (*) do rd /s /q "%a" & (
md "%a")

Я разделил их на две строки (нажмите ввод после первой строки, а когда требуется больше, добавьте вторую строку), потому что при вводе в одну строку это может не сработать. Эта команда удалит каждый каталог, а затем создаст новый, который будет пустым, тем самым удалив все файлы и вложенные папки в исходном каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...