batch-file - 删除文件夹内容但不删除文件夹

标签 batch-file cmd

我有一个文件夹 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

请注意,rdrmdir 相同 - 另请参阅这篇文章:What is the difference between MD and MKDIR batch command?

1) 如果您这样做,某些文件夹属性会丢失,例如所有者。由于 Windows 不区分大小写地对待路径,因此大小写也会丢失。

关于batch-file - 删除文件夹内容但不删除文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38767550/

相关文章:

string - Windows批处理文件-在文件中查找字符串并将其追加

windows - 管理员模式与非管理员模式 - 无法覆盖变量,因为变量已被优化

powershell - 从 cmd 运行 PowerShell 方法,不要等待它的返回

command-line - Windows 批处理错误 : "' ping' is not recognized as an internal or external command operable program or batch file."

windows-8 - 在 Windows 8 C# 中执行 cmd 命令?

windows - 批处理脚本变量不保持设置

java - 从postgresql中批量插入的行中检索序列号

batch-file - 在 DOS/Batch 中 08 小于 1,但 07 大于 1。为什么?

mysql - LOAD DATA INFILE,在包含微秒的时间戳周围加上引号

command-line - 是否有 MSDOS 命令的参数(例如 ipconfig)导致它们在消失之前等待输入?