2016-08-04 2 views
0

У меня есть папка 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 
+1

[del /s](http://ss64.com/nt/del.html)? – Stephan

+0

Вам нужно удалить вложенные папки else del /f/q/s – lordkain

+1

Возможный дубликат [Пакетный файл. Удалить все файлы и папки в каталоге] (http://stackoverflow.com/questions/6836566/batch-file-delete-all-files-and-folders-in-a-directory) –

ответ

2

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

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

Конечно, вы могли бы выполнить mkdir "C:\Epson Scans" после этого, чтобы снова создать удаленную папку снова , но об этом не просили. Таким образом, правильный ответ должен использовать 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 - Смотри также этот пост: What is the difference between MD and MKDIR batch command?

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

+0

Можете ли вы мне помочь? You код работает отлично, но я попытался вставить его в шахту и его отключающий мне было интересно, если бы вы могли взглянуть на него свой очень короткий –

+0

'@ECHO от SETLOCAL enabledelayedexpansion набора Delete_success = 0 устанавливается общий = 0 для/F %% G in (pclist.TXT) делает ( множества/в общей сложности + = 1 Pushd "C: \ Epson сканы" || выход/B 1 для/D %% I в ("*") делает ( м/S/Q " %% ~ I» ) дель/Q "*" POPD если! ERRORLEVEL! == 0 ( множество/а Delete_success + = 1 ) еще ( эхо EpsonDelete Сбой при копировании на %% G >> EpsonDelete_FailedPCs. txt ) ) echo Удалить Успех:% Delete_success% /% всего% >> EpsonDelete_FileCopy.txt' –

+0

любой шанс, что вы могли бы рассказать мне, где я ошибаюсь? –

1

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

+1

'del' удалит все * файлы * рекурсивно, но оставит пустые подпапки позади ... – aschipfl

1

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

del C:\Epson Scans\*.* /Q 
+1

Цитаты, необходимые, поскольку путь имеет пробел. –

+0

'del' удалит все * файлы * рекурсивно, но оставит пустые подпапки позади ... – aschipfl

Смежные вопросы