Удаление содержимого папки, но не папки

У меня есть папка C: \ Epson Scans, я пытаюсь выяснить, как написать сценарий, который удалит содержимое папки, но оставил ее нетронутой. Я понял, как удалить всю папку, и я мог бы воссоздать ее. Но я хотел знать, знает ли кто-нибудь способ простого удаления содержимого внутри папки, а не удаления этой папки. Любая помощь с этим будет принята с благодарностью!

Редактирование: вставка рабочего кода, чтобы я мог перебирать множество компьютеров и делать это одновременно. Кто-нибудь подскажет, пожалуйста, почему код не работает там, где я его вставил?

@echo off
setlocal enabledelayedexpansion
set Delete_success=0
set total=0

for /F %%G in (pclist.txt) do ( 
    set /a total+=1


pushd "C:\Epson Scans" || exit /B 1
for /D %%I in ("*") do (
    rd /S /Q "%%~I"
)
del /Q "*"
popd

if !ERRORLEVEL!==0 (
        set /a Delete_success+=1
    ) else (
        echo EpsonDelete copy failed on %%G>>EpsonDelete_FailedPCs.txt
    )

)
echo Delete Success: %Delete_success%/%total% >>EpsonDelete_FileCopy.txt
 Bill_Stewart17 авг. 2016 г., 18:37
Дубликатstackoverflow.com/questions/6836566, Смотрите пример сценария, который я разместил там (принятый ответ на этот вопрос не верен).
 Stephan04 авг. 2016 г., 14:40
 Bill_Stewart17 авг. 2016 г., 18:36
 lordkain04 авг. 2016 г., 14:44
вам нужно удалить подпапки еще del <имя_фолдера> / f / q / s

Ответы на вопрос(3)

Решение Вопроса

del удаляет только файлы, поэтомуdel /S /Q "C:\Epson Scans" удаляет все файлы в данной папке и подпапках (из-за/S).

rmdir удаляет папки, поэтому указавrmdir /S /Q "C:\Epson Scans" также удаляет папкуEpson Scans сам.

Конечно, вы могли бы выполнитьmkdir "C:\Epson Scans" затем заново создать удаленную папку1, но об этом не просили. Таким образом, правильный ответ заключается в использованииfor /D зацикливатьсяC:\Epson Scans и удалите каждую папку, которую он содержит, а затем используйтеdel /Q чтобы удалить файлы:

pushd "C:\Epson Scans" || exit /B 1
for /D %%I in ("*") do (
    rd /S /Q "%%~I"
)
del /Q "*"
popd

Обратите внимание, чтоrd такой же какrmdir - см. также этот пост:В чем разница между пакетной командой MD и MKDIR?

1) Считайте, что некоторые атрибуты папки теряются, если вы делаете это, например, владелец. Кроме того, дело теряется, так как Windows обрабатывает пути без учета регистра.

 David Brierton17 авг. 2016 г., 18:28
Можете ли вы помочь мне еще, пожалуйста? Ваш код работает отлично, но я попытался вставить его в мой и его взлом, мне было интересно, если вы можете взглянуть на него очень короткий
 David Brierton17 авг. 2016 г., 18:28
@echo off setlocal enabledelayedexpansion set Delete_success=0 set total=0 for /F %%G in (pclist.txt) do ( set /a total+=1 pushd "C:\Epson Scans" || exit /B 1 for /D %%I in ("*") do ( rd /S /Q "%%~I" ) del /Q "*" popd if !ERRORLEVEL!==0 ( set /a Delete_success+=1 ) else ( echo EpsonDelete copy failed on %%G>>EpsonDelete_FailedPCs.txt ) ) echo Delete Success: %Delete_success%/%total% >>EpsonDelete_FileCopy.txt
 aschipfl17 авг. 2016 г., 20:41
Код вряд ли читается в комментариях, поэтому я предлагаю опубликовать новый вопрос и удалить ваши комментарии здесь ...
 David Brierton17 авг. 2016 г., 18:29
есть ли шанс, что вы можете сказать мне, где я иду не так?

del / S C: \ Epson Scans *
(используйте S, чтобы удалить все файлы и папки в выбранной папке)

 aschipfl04 авг. 2016 г., 16:22
del удалит всефайлы рекурсивно, но оставит пустые подпапки позади ...

del C: \ Epson Scans *. * если это командный файл, вы можете добавить / Q, чтобы избежать диалога подтверждения удаления:

del C:\Epson Scans\*.* /Q
 aschipfl04 авг. 2016 г., 16:21
del удалит всефайлы рекурсивно, но оставит пустые подпапки позади ...
 Alex K.04 авг. 2016 г., 14:58
Кавычки нужны, так как путь имеет пробел.

Ваш ответ на вопрос