views:

334

answers:

3

I'm struggling to get this to work. Plenty of examples on the web, but they all do something just slightly different to what I'm aiming to do, and every time I think I can solve it, I get hit by an error that means nothing to me.

After giving up on the JSLint.VS plugin, I'm attempting to create a batch file that I can call from a Visual Studio build event, or perhaps from cruise control, which will generate JSLint warnings for a project. The final goal is to get a combined js file that I can pass to jslint, using:

cscript jslint.js < tmp.js

which would validate that my scripts are ready to be combined into one file for use in a js minifier, or output a bunch of errors using standard output.

but the js files that would make up tmp.js are likely to be in multiple subfolders in the project, e.g:

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

The ideal solution would be to be able to call a batch file along the lines of:

jslint.bat %ProjectPath%

and this would then combine all the js files within the project into one temp js file. This way I would have flexibility in which project was being passed to the batch file.

I've been trying to make this work with copy, xcopy, type, and echo, and using a for do loop, with dir /s etc, to make it do what I want, but whatever I try I get an error.

A: 

A great place for tips on batch files is DosTips.com

Paulo Santos
A: 

Have a look at http://nefariousdesigns.co.uk/archive/2010/02/website-builds-using-make/

The post is written for Linux world but still you might be able to salvage something out of it.

eyescream
+1  A: 

You could create a batch file with the following contents:

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

and then run it via:

jslint.bat PATH > tmp.js

If you don't want to use redirection, you can try:

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

note that for simplicity, I haven't bothered doing any error-checking (e.g. checking whether an argument is supplied (although if one isn't, it'll just use the current directory), testing that tmp.js doesn't already exist, etc.).

jamesdlin
This was a big help, thankyou.
Andrew Johns