Я використовую Windows.
Я хочу видалити всі файли та папки в папці за допомогою системного дзвінка.
Я можу зателефонувати так:
>rd /s /q c:\destination
>md c:\destination
Ви знаєте простіший спосіб?
Я використовую Windows.
Я хочу видалити всі файли та папки в папці за допомогою системного дзвінка.
Я можу зателефонувати так:
>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
перемикачем, щоб видалити всі файли та підпапки. За замовчуванням робокопія не копіює захист, тому ACL у вашій кореневій папці повинні залишатися недоторканими.
Також, ймовірно, хочеться встановити значення для перемикача повторних спроб /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 після першого рядка, а коли запитують більше, додайте другий рядок), тому що якщо ввести в одному рядку, це може не спрацювати. Ця команда видалить кожен каталог, а потім створить новий, який є порожнім, таким чином видаляючи всі файли та підпапки у вихідному каталозі.
Перейдіть до батьківського каталогу
Видаліть підпапки
/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"