Как удалить все файлы и папки в папке с помощью вызова cmd

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

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

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

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

Знаете ли вы более простой способ?

Ответ 1

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

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

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"

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"

Ответ 5

Да! Использовать Powershell:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"

Ответ 6

Один простой вариант с одной строкой - создать пустой каталог где-то в вашей файловой системе, а затем использовать 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

Ответ 7

Чтобы удалить файл:

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"

Вы можете создать script, чтобы удалить все, что вы хотите (папка или файл), как этот 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

Ответ 8

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

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

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