it-swarm.com.ru

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

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

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

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

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

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

63
ufukgun

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

Если по какой-то причине вы хотите сохранить исходный каталог (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"
110
Joey

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

26
Sean

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

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

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

25
Banan

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

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

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

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

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

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
3
Maxim Suslov

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

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

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

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

Line2 RD/S/Q. 2> NUL

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

0
Academy of Programmer

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

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

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

0
Ynotinc