Пользуюсь виндой.
Я хочу удалить все файлы и папки в папке с помощью системного вызова.
Я могу так называть:
>rd /s /q c:\destination
>md c:\destination
Вы знаете способ попроще?
Пользуюсь виндой.
Я хочу удалить все файлы и папки в папке с помощью системного вызова.
Я могу так называть:
>rd /s /q c:\destination
>md c:\destination
Вы знаете способ попроще?
Ответы:
Нет, не знаю.
Если вы по какой-то причине хотите сохранить исходный каталог (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"
destination
путем, возможно, при необходимости заключая все в кавычки.
del c:\destination\*.* /s /q
работал у меня. Надеюсь, это сработает и для вас.
del *.*
del "../../server/front-end\*.*"
Я думаю, что самый простой способ сделать это:
rmdir /s /q "C:\FolderToNotToDelete\"
Последний «\» на пути - важная часть.
mkdir C:\FolderToNotToDelete
меня было достаточно :)
Да! Используйте Powershell:
powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Чтобы удалить файл:
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 не копирует безопасность, поэтому списки ACL в корневой папке должны оставаться неизменными.
Также, вероятно, вы захотите установить значение для переключателя повторов /r
, потому что количество повторов по умолчанию составляет 1 миллион.
robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
У меня была индексная папка с 33 папками, из которых нужно было удалить все файлы и подпапки. Я открыл командную строку в папке index и затем использовал следующие команды:
for /d in (*) do rd /s /q "%a" & (
md "%a")
Я разделил их на две строки (нажмите Enter после первой строки, а когда вас попросят добавить вторую строку), потому что, если ввести в одной строке, это может не сработать. Эта команда сотрет каждый каталог, а затем создаст новый, который будет пустым, тем самым удалив все файлы и вложенные папки в исходном каталоге.
Перейдите в родительский каталог
Удалить подпапки
/superuser/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt
pushd
вы тоже должны использовать popd
. К сожалению, popd
не работает при удалении каталога. Итак, вы должны делать cd
вместо pushd
.
попробуйте это, это будет искать все MyFolder в корневом каталоге и удалять все папки с именем MyFolder
for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
del .\*
Эта команда удаляет все файлы и папки из текущей навигации в командной строке.