用于删除学生驱动器 (G) 内所有文件和文件夹的批处理脚本

Batch script used to delete all files and folders inside of a student drive (G)

你好,这是我的第一个 post 所以这里什么都没有。我目前正在与一位主管一起完成一项任务,他希望我创建一个批处理脚本,该脚本将提取学生 (G) 驱动器中的所有内容。当我 运行 这个命令时它只删除文件。文件夹和应用程序根本不会被删除。

这是我放在 .bat 脚本中的内容

forfiles -p "G:\" -s -m *.* /D -0 /C "cmd /c del @path"

盘初.

在 CMD 中,您应该使用 RD (RMDIR) 命令来完全删除文件夹及其下的所有文件。

但是,您仍然需要删除 G:\ 驱动器中的文件本身,因为您无法删除那里的文件夹。

这应该可以满足需要:

@(SETLOCAL
  ECHO OFF
  SET "_Path=G:\"
)

REM Delete all Subdirectories and their File Contents
FOR /F "delims=:" %%_ IN ('
  dir /B /A:D "%_Path%*" ') do (
  RD /S /Q "%_Path%%%_\")

REM Delete all files in Root Folder:
DEL /F /Q  "%_Path%*" & DEL /F /Q /A:H "%_Path%*"

正如 Mofi 指出的那样,默认情况下不显示隐藏目录,因此我不得不 运行 两个循环或使用 For 循环,因为他提出了对具有前导或尾随空格的目录的担忧我修改了改为使用 DIR 并使用 FOR /F 循环而不是 FOR /D 来解析它,但是如果你没有这些要求,这都是无稽之谈。

注意删除尾随空格的文件 DEL 完成工作。

尝试删除的示例 Hidden/System/Read 只有目录 - 这些有效(当然,只要您处于提升的命令提示符下)

C:\Admin>MD D:\Hidden

C:\Admin>MD D:\System

C:\Admin>MD D:\ReadOnly

C:\Admin>Attrib +H D:\Hidden

C:\Admin>Attrib +S D:\System

C:\Admin>Attrib +R D:\ReadOnly

C:\Admin>for /D %A IN (D:\*) DO @(ECHO.%A)
D:\DCIM
D:\temp
D:\srtFtpLogs
D:\srtFtpData
D:\Bkp
D:\System
D:\ReadOnly

C:\Admin>attrib D:\Hidden
    H        D:\Hidden

C:\Admin>attrib D:\System
   S         D:\System

C:\Admin>attrib D:\ReadOnly
     R       D:\ReadOnly

C:\Admin>RD /S /Q D:\ReadOnly

C:\Admin>RD /S /Q D:\System

C:\Admin>RD /S /Q D:\Hidden

C:\Admin>attrib D:\ReadOnly
File not found - D:\ReadOnly

C:\Admin>attrib D:\System
File not found - D:\System

C:\Admin>attrib D:\ReadOnly
File not found - D:\ReadOnly

如何做:

rd G:\. /S /Q

您也可以 pushd 到目录,然后使用 && 运算符简单地进行删除,以确保 pushd 命令在执行 rd 命令之前完成。

pushd G:\ && rd . /S /Q