2009-07-17 85 views
0

我試圖創建一個批處理文件,該文件將針對目錄中的所有.js文件運行Doug Cockford的JSMin。這裏就是我的了:在批處理文件中使用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認爲尖括號是路徑的一部分。

任何想法?我究竟做錯了什麼?

回答

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總是這樣符號化,通常只基於空白,雖然。但是我的配置文件夾裏已經有空格,所以最好關掉標記。

+0

如果我直接在命令提示符中鍵入它,但在包含在批處理文件中時不起作用。遞歸和For循環不是問題。 僅從批處理文件運行以下行失敗: jsmin jsmin-stuff.js 爲什麼它失敗? 如何改變它,使其不會失敗? – mikefrey 2009-07-18 20:28:24

相關問題