0

ディレクトリ内のすべての.jsファイルに対してDougCockfordのJSMinを実行するバッチファイルを作成しようとしています。これが私が持っているものです:

for /f %%a IN ('dir /b /s *.js') do jsmin <%%a >%%~da%%~pamin\%%~na.min%%~xa

問題は、山かっこ(<>)により、バッチファイルがそれを0<および1>として解釈することです。ちょうど実行中のイベント:

jsmin <scripts\script.js >jsmin-stuff.js

バッチファイルでも同じことをします。山かっこを^でエスケープすると、jsminは山かっこがパスの一部であると見なします。

何か案は?私は何が間違っているのですか?

4

1 に答える 1

2

まず第一に、あなたは一人で十分でfor /fある何かのために使用しています。for次に、これを再帰的に実行することはお勧めしません。これは、最小化されたスクリプトを同じツリーのサブフォルダーに配置していることは明らかだからです。

for %x in (*.js) do jsmin <"%x" >"min\%~nx-min.js"

(バッチからではなく、コマンドラインから)ここで私にとって必要なことを実行します。0は標準入力ストリームであり、1は標準出力ストリームであり、どちらもリダイレクトしているため、実際に正しいものが表示されます0<1>

これを再帰的に行うために、次の行が私のためにトリックを行いました:

for /r %x in (*.js) do jsmin <"%x" >"%~dpx\min\%~nx-min.js"

ETA:わかりました、確認しました。dir実際、この方法はを使用するよりも信頼性が高くなりfor /rます。謝罪します。バッチファイルから、次のことがうまくいきました。

for /f "usebackq delims=" %%x in (`dir /s /b *.js`) do jsmin <"%%x" >"%%~dpx\min\%%~nx-min.js"

for /fただし、通常は空白のみに基づいて、常にトークン化を行います。しかし、私のプロファイルフォルダにはすでに空白が含まれているため、トークン化を完全にオフにすることをお勧めします。

于 2009-07-17T23:15:22.577 に答える