![如何使用脚本从 Windows 中的给定目录中删除空文件夹](https://linux22.com/image/1320694/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC%E4%BB%8E%20Windows%20%E4%B8%AD%E7%9A%84%E7%BB%99%E5%AE%9A%E7%9B%AE%E5%BD%95%E4%B8%AD%E5%88%A0%E9%99%A4%E7%A9%BA%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我在用着r.js作为构建工具,但截至今天,该工具仍无法让我删除构建目录中的空文件夹。我找到了这两个脚本
for /f "usebackq" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"
for /f "delims=" %%i in ('dir /s /b /ad ^| sort /r') do rd "%%i">NUL
在网上搜索,但我总是得到
%%i was unexpected at this time.
或者
%%d was unexpected at this time.
而且我不知道如何告诉脚本我的目录在哪里。
我的构建脚本是
@echo off
where /q r.js || (
echo requirejs node package is not installed. You must install node, npm and then run npm install -g requirejs
goto :eof
)
node r.js -o app.build.js
:end
我需要告诉脚本删除位于里面的所有空目录../../js
答案1
由于我从未完全理解的原因,for
在批处理文件内部和外部使用不同的语法。
此命令应在批处理文件中运行
for /f "delims=" %%i in ('dir /s /b /ad ^| sort /r') do rd "%%i"
在命令提示符(无批处理文件)中,您必须%%i
替换%i
:
for /f "delims=" %i in ('dir /s /b /ad ^| sort /r') do rd "%i"
另外,要抑制The directory is not empty.
错误消息,请使用rd "%i" 2>NUL
。
答案2
请注意第一个脚本,即下面的脚本,不适用于含有空格字符的目录。
for /f "usebackq" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"
正确版本应该在这里。请注意,必须禁用默认空格和制表符作为分隔符。
for /f "usebackqdelims=" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"
并且请参阅 Dennis 的答案(已接受的答案)以了解如何在命令提示符下使用该脚本。