And*_*hns 2 windows merge file batch-file subdirectory
我正在努力让这个工作.网上有很多例子,但是他们都做了一些与我打算做的事情略有不同的事情,而且每当我想我能解决它时,我就会遇到一个对我没有任何意义的错误.
在放弃JSLint.VS插件之后,我正在尝试创建一个批处理文件,我可以从Visual Studio构建事件或者巡航控制中调用该文件,这将为项目生成JSLint警告.最终目标是获取一个可以传递给jslint的组合js文件,使用:
cscript jslint.js < tmp.js
Run Code Online (Sandbox Code Playgroud)
这将验证我的脚本是否已准备好合并到一个文件中以便在js minifier中使用,或者使用标准输出输出一堆错误.
但构成tmp.js的js文件可能位于项目的多个子文件夹中,例如:
D:\_projects\trunk\web\projectname\js\somefile.debug.js
D:\_projects\trunk\web\projectname\js\jquery\plugins\jquery.plugin.js
Run Code Online (Sandbox Code Playgroud)
理想的解决方案是能够按以下方式调用批处理文件:
jslint.bat %ProjectPath%
Run Code Online (Sandbox Code Playgroud)
然后,这会将项目中的所有js文件合并到一个temp js文件中.通过这种方式,我可以灵活地将项目传递给批处理文件.
我一直在努力使这个工作与copy,xcopy,type和echo,并使用for do循环,使用dir/s等,使它做我想要的,但无论我尝试什么,我得到一个错误.
您可以使用以下内容创建批处理文件:
@echo off
pushd "%~1"
for /r %%x in (*.js) do (
type "%%~x"
)
popd
Run Code Online (Sandbox Code Playgroud)
然后通过以下方式运行:
jslint.bat PATH > tmp.js
Run Code Online (Sandbox Code Playgroud)
如果您不想使用重定向,可以尝试:
@echo off
pushd "%~1"
echo.>tmp.js
for /r %%x in (*.js) do (
copy tmp.js + "%%~x" tmp.js > NUL
)
popd
Run Code Online (Sandbox Code Playgroud)
请注意,为简单起见,我没有打扰进行任何错误检查(例如,检查是否提供了参数(尽管如果不提供,它将仅使用当前目录),测试tmp.js尚未存在,等等).