我正在尝试开发一个批处理文件来自动删除驱动器D中的空文件夹,如下所示:
for /d %%d in (*.*) do (
rmdir %%d
)但是,当通过Windows的作业调度程序运行批处理文件时,我发现代码试图将空文件夹移到另一个驱动器中。那么,我如何在编码(*.*)时将其更改为特定的驱动器D:?
发布于 2017-10-20 16:20:55
这是因为通过计划任务运行时,您的脚本不会在驱动器D:中执行,而是(默认情况下)在执行任务的用户的根文件夹中执行。
在批处理文件的开头添加D::
D:
for /d %%d in (*.*) do (
rmdir %%d
)发布于 2017-10-20 16:23:39
for /d %%d in (D:*) do (注意*不是.
如果愿意,可以使用d:\directoryname\*启动指定的目录名,或者
for /d /r "D:\" %%d in (*) do echo %%d遍历目录树(注意:为了安全起见,使用ECHO )
最好使用"%%d“作为目录,否则directory name containing spaces将作为‘删除包含”和“空格”的目录“”RMDIR“”执行。“
发布于 2017-10-20 22:07:27
@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不允许删除非空文件夹,因此仅删除空文件夹。
https://stackoverflow.com/questions/46844857
复制相似问题