как я могу удалить все файлы/подпапки в данной папке через командную строку?

<p>я хотел бы удалить все файлы и подпапки в пакетном файле в windows 7 и сохранить верхнюю папку. в основном очистка папки. какова инструкция командной строки для этого?</p>

<p>вы можете сделать это, используя <code>del</code> и флаг <code>/s</code> (чтобы он удалил все файлы из всех подкаталогов):</p><pre><code>del /s c:\path\to\directory\* </code></pre>

<p>лучшее решение: например, я хочу удалить все файлы и подкаталоги родительского каталога, скажем «c:\users\desktop\new folder \». самый простой способ - создать командный файл из трех команд.</p><blockquote> <p>cd c:\users\desktop\новая папка \</p> <p>del */s/q</p> <p>rmdir/s/q "c:\users\desktop\новая папка \"</p> </blockquote><p>здесь сначала он очистит все файлы во всех подкаталогах, а затем очистит все пустые подкаталоги. поскольку текущим рабочим каталогом является родительский каталог, т. е. "\ new folder", команда rmdir не может удалить этот каталог самостоятельно.</p>

<p>перейдите в родительский каталог:</p><pre><code>pushd "parent directory" </code></pre><p>удалить вложенные папки:</p><pre><code>rd /s /q . 2>nul </code></pre>

<p>вы можете использовать rmdir для удаления файлов и подпапок, например так:</p><pre><code>rmdir /s/q myfolderpath </code></pre><p>тем не менее, это значительно быстрее, особенно когда в вашей структуре много подпапок для использования del перед rmdir, например:</p><pre><code>del /f/s/q myfolderpath > nul rmdir /s/q myfolderpath </code></pre>

<pre><code>rmdir "c:\pathofyourdirectory" /q /s </code></pre><p>не забудьте использовать кавычки, и для <code>/q /s</code> он удалит все репозитории без запроса.</p>

<p>вы можете сделать это быстро и легко, поместив эти три инструкции в свой файл bat:</p><pre><code>mkdir empty\_folder robocopy /mir empty\_folder "path\_to\_directory" rmdir empty\_folder </code></pre>

<p>если вы хотите удалить все файлы в папке, включая все подпапки, и не полагаться на некоторые условия ошибки, чтобы сохранить корневую папку нетронутой (как я видел в другом ответе), вы можете получить пакетный файл, подобный этому:</p><pre><code>@echo off rem checking for command line parameter if "%~1"=="" ( echo parameter required. exit /b 1 ) else ( rem change directory and keep track of the previous one pushd "%~1" if errorlevel 1 ( rem the directory passed from command line is not valid, stop here. exit /b %errorlevel% ) else ( rem first we delete all files, including the ones in the subdirs, without confirmation del * /s /q rem then we delete all the empty subdirs that were left behind for /f %%d in ('dir /b /s /a:d "%~1"') do rmdir /s /q "%%d" rem change directory back to the previous one popd rem all good. exit /b 0 ) ) </code></pre><p>и тогда вы просто позвоните с помощью:</p><pre><code>empty\_my\_folder.bat "c:\whatever\is\my folder" </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>это работало лучше для меня, когда у меня были пробелы в именах папок.</p><pre><code>@echo off rem ---- batch file to clean out a folder rem checking for command line parameter if "%~1"=="" ( echo parameter required. exit /b 1 ) else ( echo *********************************************************************************** echo *** deleting all files, including the ones in the subdirs, without confirmation *** del "%~1\*" /s /q echo *********************************************************************************** rem deleting all the empty subdirs that were left behind for /r "%~1" %%d in (.) do ( if "%%d"=="%~1\." ( echo *** cleaning out folder: %~1 *** ) else ( echo removed folder "%%d" rmdir /s /q "%%d" ) ) rem all good. exit /b 0 ) </code></pre>

<p>это то, что сработало для меня.</p><ol> <li>перейдите в папку, где вы хотите удалить файлы.</li> <li>тип: <code>del *</code></li> <li><code>y</code> для да.</li> <li>готово</li> </ol>