如何使用腳本從Windows中的給定目錄中刪除空資料夾

如何使用腳本從Windows中的給定目錄中刪除空資料夾

我在用著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"

請參閱丹尼斯的答案(已接受的答案)以在命令提示字元中使用腳本。

相關內容