9 ответов:
Нет, я не знаю ни одного.
если вы хотите сохранить исходный каталог по какой-то причине (ACLs, &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"
Я думаю, самый простой способ сделать это:
rmdir /s /q "C:\FolderToNotToDelete\"последнее " \ " в пути является важной частью.
если имена вложенных папок могут содержать пробелы, их необходимо заключить в экранированные кавычки. В следующем примере это показано для команд, используемых в пакетном файле.
set targetdir=c:\example del /q %targetdir%\* for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
удалить файл:
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
один простой однострочный вариант-создать пустой каталог где-то в вашей файловой системе, а затем использовать
ROBOCOPY(http://technet.microsoft.com/en-us/library/cc733145.aspx) с/MIRпереключатель для удаления всех файлов и вложенных папок. По умолчанию robocopy не копирует безопасность, поэтому списки управления доступом в корневой папке должны оставаться нетронутыми.также, вероятно, хотите установить значение для переключателя повтора,
/r, потому что по умолчанию количество попыток 1 миллион.robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
У меня была индексная папка с 33 папками, в которых нужно было удалить все файлы и подпапки. Я открыл командную строку в папке индекса, а затем использовал следующие команды:
for /d in (*) do rd /s /q "%a" & ( md "%a")Я разделил их на две строки (нажмите enter после первой строки, и когда вас попросят добавить вторую строку), потому что если ввести в одну строку, это может не сработать. Эта команда удалит каждый каталог, а затем создаст новый, который будет пустым, тем самым удаляя все файлы и подпапки в каталоге. оригинальный каталог.
перейдите в родительский каталог
Line1 pushd "родительский каталог"
удалить подпапки
Line2 rd /s / q . 2 > nul
Comments