我有一个文件夹 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
最佳答案
del
仅删除文件,因此 del/S/Q "C:\Epson Scans"
会删除给定文件夹和子文件夹中的所有文件(由于 /S
)。
rmdir
会删除文件夹,因此指定 rmdir/S/Q "C:\Epson Scans"
也会删除文件夹 Epson Scans
本身。
当然,您可以随后执行mkdir "C:\Epson Scans"
来重新创建已删除的文件夹1,但系统并没有要求这样做。因此,正确的答案是对 C:\Epson Scans
使用 for/D
循环并删除它包含的每个文件夹,然后使用 del/Q
code> 删除文件:
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 不区分大小写地对待路径,因此大小写也会丢失。
关于batch-file - 删除文件夹内容但不删除文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38767550/