在批处理文件中使用JSMin

时间:2009-07-17 22:33:51

标签: javascript batch-file dos

我正在尝试创建一个批处理文件,该文件将针对目录中的所有.js文件运行Doug Cockford的JSMin。这就是我所拥有的:

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

问题是尖括号(&lt;&gt;)导致批处理文件将其解释为0&lt;和1>。活动正好:

jsmin <scripts\script.js >jsmin-stuff.js
批处理文件中的

做同样的事情。使用^转义尖括号使得jsmin认为尖括号是路径的一部分。

有什么想法吗?我做错了什么?

1 个答案:

答案 0 :(得分:2)

首先,您使用for /f来表示仅for就足够了。其次,我不建议递归地执行此操作,因为您显然将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:好的,我查了一下,dir方法实际上比使用for /r更可靠。我道歉。从批处理文件中,以下内容对我有用:

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

for /f总是进行标记,通常只基于空格。但我的个人资料文件夹中已经有空格,所以最好完全关闭标记化。