
我在用著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"
請參閱丹尼斯的答案(已接受的答案)以在命令提示字元中使用腳本。