删除文件夹内容但不删除文件夹

Dav*_*ton 2 cmd batch-file

我有一个文件夹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
Run Code Online (Sandbox Code Playgroud)

asc*_*pfl 6

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
Run Code Online (Sandbox Code Playgroud)

注意rdrmdir- 相同- 另见本文:MD和MKDIR批处理命令有什么区别?

1)如果您这样做,请注意某些文件夹属性会丢失,例如所有者.此案例也会丢失,因为Windows会对不区分大小写的路径进行处理.