
私は使用していますr.jsビルドツールとして、しかし今日現在、そのツールではビルドディレクトリ内の空のフォルダを削除する機能がありませんでした。私は次の2つのスクリプトを見つけました
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 の回答 (承認済み) を参照してください。