自动删除驱动器D中的空文件夹:

时间:2017-10-20 08:09:23

标签: batch-file

我正在尝试开发一个批处理文件,以自动删除驱动器D中的空文件夹,如下面的代码:

for /d %%d in (*.*) do (
rmdir %%d
)

但是,在Windows的作业调度程序运行批处理文件时,我发现代码试图将空文件夹删除到另一个驱动器中。那么如何在编码(*.*)到特定驱动器D:?

时将其更改

3 个答案:

答案 0 :(得分:0)

这是因为您的脚本在通过计划任务运行时未在驱动器D:中执行,但(默认情况下)在执行任务的用户的根文件夹中执行。

在批处理文件的开头添加D:

D:
for /d %%d in (*.*) do (
rmdir %%d
)

答案 1 :(得分:0)

for /d %%d in (D:*) do (

注意*而不是.

如果您愿意,可以使用d:\directoryname\*启动指定的目录名,或

for /d /r "D:\" %%d in (*) do echo %%d

继续浏览目录树(注意:ECHO是为了安全起见)

使用" %% d"是个好主意。对于RMDIR,因为否则directory name containing spaces将被执行为'删除目录"目录" "名称" "含有"和"空格"`'

答案 2 :(得分:0)

@echo off
    setlocal enableextensions disabledelayedexpansion
    for /f "delims=" %%a in ('dir d:\ /s /b /ad ^| sort /r') do 2>nul rmdir "%%~fa"

这使用dir命令检索驱动器d:根目录下的所有文件夹的列表。此列表按相反顺序排序,因此子文件夹显示在其父项之前。这样,如果移除一个孩子会留下一个空的父母,那么它也将被删除。

使用for /f命令处理此反向排序列表,该命令尝试删除所有文件夹。默认情况下,rmdir不允许删除非空文件夹,只删除空文件夹。