2009-07-17 7 views
0

ディレクトリのすべての.jsファイルに対してDoug CockfordのJSMinを実行するバッチファイルを作成しようとしています。 (<>)>バッチファイルが0 <と1としてそれを解釈する原因JSMinをバッチファイルで使用する

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

問題は角括弧ということである:ここでは私が持っているものです。実行中のイベント:

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

バッチファイルでも同じことが実行されます。 ^で角かっこをエスケープすると、角かっこがパスの一部であると考えられます。

アイデア?私は間違って何をしていますか?

答えて

2

まず、forだけで十分な場合は、for /fを使用しています。第2に、同じツリーのサブフォルダにmin-ifiedスクリプトを配置しているので、これを再帰的に行うことはお勧めしません。

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は: [OK]を、私はそれをチェックし、dir方法はfor /rを使用するよりも、より信頼性が、実際に動作します。謝罪します。バッチファイルから私のために働い以下:

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

for /f常に通常はいえ、空白に基づいて、トークン化を行います。しかし、私のプロファイルフォルダにはすでに空白が入っているので、トークン化を完全に無効にしてください。

+0

コマンドプロンプトに直接入力すると機能しますが、バッチファイルに含まれていると機能しません。再帰とForループは問題ではありません。 バッチファイルから次の行を実行すると失敗します。 jsmin jsmin-stuff.js なぜ失敗しますか? どのように失敗しないように変更できますか? – mikefrey

+0

ちなみに、 'dir/b/s * .js'は最初にファイルのリストを取得してから新しいファイルを作成するので、オリジナルのforループを使って再帰の問題は発生しません。 – mikefrey

関連する問題