2010-04-15 102 views
2

我正在努力实现这一目标。网络上有很多例子,但他们都做了一些与我打算做的事情略有不同的事情,每次我想我可以解决它时,我都会遇到一个对我来说毫无意义的错误。批处理文件将子文件夹中的.js文件合并到一个组合文件中

放弃JSLint.VS插件后,我试图创建一个批处理文件,我可以从Visual Studio生成事件调用,或者从巡航控制中为项目生成JSLint警告。最终的目标是让我可以传递到JSLint的组合js文件,使用:

cscript jslint.js < tmp.js 

这将验证我的脚本就可以合并成一个文件在一个js minifier使用,或输出使用标准输出的一堆错误。

但js文件,将弥补tmp.js很可能是在多个子文件夹中的项目,如:

D:\_projects\trunk\web\projectname\js\somefile.debug.js 
D:\_projects\trunk\web\projectname\js\jquery\plugins\jquery.plugin.js 

理想的解决方案是能够调用沿着一个批处理文件如下行:

jslint.bat %ProjectPath% 

然后这会将项目中的所有js文件合并到一个临时js文件中。这样我可以灵活地将项目传递给批处理文件。

我一直在尝试使用copy,xcopy,type和echo以及使用for do循环和dir/s等来使其工作,以使其执行我想要的操作,但无论我尝试如何获得一个错误。

+0

也可以发布错误。 – 2010-04-15 16:48:54

+0

我有太多提及。我花了好几个小时在上面,每次碰到一堵砖墙。我不确定哪个错误最接近最终解决方案,因此我必须列出大约3或4次不同的尝试以及与它们相关的错误。 但是,如果需要的话,我会重新追踪我的尝试并列出我在做这件事时所犯的每个错误:) – 2010-04-15 17:11:51

+0

这将是一个好主意。向我们展示您拥有的当前代码以及您获得的错误。 – aphoria 2010-04-15 17:27:16

回答

5

你可以创建一个包含以下内容的批处理文件:

@echo off 
pushd "%~1" 
for /r %%x in (*.js) do (
    type "%%~x" 
) 
popd 

,然后通过运行它:

jslint.bat PATH > tmp.js 

如果你不想使用重定向,你可以试试:

@echo off 
pushd "%~1" 
echo.>tmp.js 
for /r %%x in (*.js) do (
    copy tmp.js + "%%~x" tmp.js > NUL 
) 
popd 

请注意,为了简单起见,我没有打扰做任何错误检查(例如检查参数(尽管如果不是,它只会使用当前目录),测试tmp.js不存在等)。

+1

这是一个很大的帮助,谢谢。 – 2010-05-06 09:40:46

0

对批处理文件提示一个伟大的地方是DosTips.com

相关问题