我有一个文件夹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
答案 0 :(得分:6)
del /S /Q "C:\Epson Scans"
仅删除文件,因此/S
会删除指定文件夹和子文件夹中的所有文件(由于rmdir
)。
rmdir /S /Q "C:\Epson Scans"
删除文件夹,因此指定Epson Scans
也会删除文件夹mkdir "C:\Epson Scans"
本身。
当然你可以在之后执行for /D
再次新建一个已删除的文件夹 1 ,但是没有要求这样做。所以正确的答案是在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
与factory
相同 - 另请参阅此帖:What is the difference between MD and MKDIR batch command?
1)如果您这样做,请注意某些文件夹属性会丢失,例如所有者。此情况也会丢失,因为Windows会对不区分大小写的路径进行处理。
答案 1 :(得分:1)
del / S C:\ Epson Scans *
(使用S删除所选文件夹中的所有文件和文件夹)
答案 2 :(得分:1)
del C:\ Epson Scans *。* 如果这是批处理文件,您可能需要添加/ Q以避免删除确认对话框:
del C:\Epson Scans\*.* /Q