Javascript 在批处理文件中使用JSMin

Javascript 在批处理文件中使用JSMin,javascript,batch-file,dos,Javascript,Batch File,Dos,我正在尝试创建一个批处理文件,该文件将针对目录中的所有.js文件运行Doug Cockford的JSMin。以下是我得到的: for /f %%a IN ('dir /b /s *.js') do jsmin <%%a >%%~da%%~pamin\%%~na.min%%~xa 对于('dir/b/s*.js')中的/f%%a,执行jsmin%%~da%%~pamin\%%~na.min%%~xa 问题是尖括号()导致批处理文件将其解释为0。正在运行的事件: jsmin <

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

for /f %%a IN ('dir /b /s *.js') do jsmin <%%a >%%~da%%~pamin\%%~na.min%%~xa
对于('dir/b/s*.js')中的/f%%a,执行jsmin%%~da%%~pamin\%%~na.min%%~xa
问题是尖括号()导致批处理文件将其解释为0<和1>。正在运行的事件:

jsmin <scripts\script.js >jsmin-stuff.js
jsmin-jsmin-stuff.js
在批处理文件中执行相同的操作。用“^”转义尖括号会使jsmin认为尖括号是路径的一部分


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

首先,您使用
for/f
来处理一些仅
for
就足够的事情。其次,我不建议递归地执行此操作,因为很明显,您正在将最小化脚本放置到同一树的子文件夹中

for %x in (*.js) do jsmin <"%x" >"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“usebackq delims=“%%x in(`dir/s/b*.js`)do jsmin”%%~dpx\min\%%~nx-min.js”

for/f
始终进行标记化,但通常仅基于空白。但是我的配置文件文件夹中已经有空白,所以最好完全关闭标记化。

如果我直接在命令提示符中键入它,它会起作用,但如果包含在批处理文件中,它就不起作用了。递归和For循环不是问题所在。仅从批处理文件运行以下行失败:jsmin-jsmin-stuff.js为什么失败?如何更改它以使其不会失败?顺便说一句,使用我原来的for循环不会有任何递归问题,因为'dir/b/s*.js'首先获得一个文件列表。。。然后创建新文件。
for /f "usebackq delims=" %%x in (`dir /s /b *.js`) do jsmin <"%%x" >"%%~dpx\min\%%~nx-min.js"