如何使用脚本从 Windows 中的给定目录中删除空文件夹

如何使用脚本从 Windows 中的给定目录中删除空文件夹

我在用着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

一个简单的rd "%i">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 的答案(已接受的答案)以了解如何在命令提示符下使用该脚本。

相关内容