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

<p>я использую windows.</p><p>я хочу удалить все файлы и папки в папке с помощью системного вызова.</p><p>я могу позвонить так:</p><pre><code>>rd /s /q c:\destination >md c:\destination </code></pre><p>вы знаете более легкий путь?</p>

<p>нет, я не знаю ни одного.</p><p>если по какой-то причине вы хотите сохранить исходный каталог (acl и т.д.) и вместо этого действительно хотите очистить его, вы можете сделать следующее:</p><pre><code>del /q destination\* for /d %x in (destination\*) do @rd /s /q "%x" </code></pre><p>при этом сначала удаляются все файлы из каталога, а затем рекурсивно удаляются все вложенные каталоги, но в целом сохраняется каталог верхнего уровня таким, какой он есть (за исключением его содержимого).</p><p>обратите внимание, что в пакетном файле вам нужно удвоить <code>%</code> внутри цикла <code>for</code>:</p><pre><code>del /q destination\* for /d %%x in (destination\*) do @rd /s /q "%%x" </code></pre>

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

<p>я думаю, что самый простой способ сделать это:</p><pre><code>rmdir /s /q "c:\foldertonottodelete\" </code></pre><p>последнее "\" в пути является важной частью.</p>

<p>если имена подпапок могут содержать пробелы, вам необходимо заключить их в экранированные кавычки. в следующем примере это показано для команд, используемых в командном файле.</p><pre><code>set targetdir=c:\example del /q %targetdir%\* for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^" </code></pre>

<p>да! используйте powershell:</p><pre><code>powershell -command "remove-item 'c:\destination\*' -recurse -force" </code></pre>

<p>чтобы удалить файл:</p><pre><code>del path\_to\_file </code></pre><p>чтобы удалить папку со всеми файлами в ней:</p><pre><code>rmdir /s /q path\_to\_folder </code></pre><p>удалить все файлы из определенной папки (не удаляя саму папку) немного сложнее. <code>del /s *.*</code> не может удалять папки, но удаляет файлы из всех подпапок. итак, нужны две команды:</p><pre><code>del /q path\_to\_folder\*.* for /d %i in (path\_to\_folder\*.*) do @rmdir /s /q "%i" </code></pre><p>вы можете создать скрипт для удаления того, что вы хотите (папка или файл), например, <code>mydel.bat</code>:</p><pre><code>@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% </code></pre><p>несколько примеров использования:</p><pre><code>mydel.bat "path\to\folder with spaces" mydel.bat path\to\file\_or\_folder </code></pre>

<p>один простой вариант в одну строку - создать пустой каталог где-нибудь в вашей файловой системе, а затем использовать <code>robocopy</code> ( <a href="http://technet.microsoft.com/en-us/library/cc733145.aspx">http://technet.microsoft.com/en-us/library/cc733145.aspx</a> ) с <code>/mir</code> переключить, чтобы удалить все файлы и подпапки. по умолчанию robocopy не копирует защиту, поэтому списки acl в корневой папке должны оставаться неизменными.</p><p>также, вероятно, нужно установить значение для параметра повторных попыток <code>/r</code>, поскольку число повторных попыток по умолчанию равно 1 миллиону.</p><pre><code>robocopy "c:\donotdelete\_usedbyscripts\emptyfolder" "c:\temp\mydirectorytoempty" /mir /r:3 </code></pre>

<p>перейдите в родительский каталог</p><h1>line1 pushd "родительский каталог"</h1><p>удалить вложенные папки</p><h1>line2 rd/s/q. 2> nul</h1><p> <a href="https://superuser.com/questions/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt">https://superuser.com/questions/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt</a> </p>

<p>у меня была папка с 33 папками, в которой нужно было удалить все файлы и подпапки. я открыл командную строку в папке index и затем использовал эти команды:</p><pre><code>for /d in (*) do rd /s /q "%a" & ( md "%a") </code></pre><p>я разделил их на две строки (нажмите ввод после первой строки и когда попросили больше добавить вторую строку), потому что при вводе в одну строку это может не сработать. эта команда удалит каждый каталог, а затем создаст новый, который будет пустым, тем самым удалив все файлы и вложенные папки в исходном каталоге.</p>