我正在尝试创建一个批处理文件,它将对一个目录中的所有.js文件运行Doug Cockford的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认为尖括号是路径的一部分。
有什么想法吗?我做错了什么?
发布于 2009-07-17 23:15:23
首先,在for本身就足够的情况下,您正在使用for /f。其次,我不建议以递归方式执行此操作,因为您显然是将最小化的脚本放在同一个树的子文件夹中。
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通常只基于空格进行标记化。但是我的配置文件文件夹中已经有空格了,所以最好完全关闭标记化。
https://stackoverflow.com/questions/1145971
复制相似问题