【问题标题】:batch file to merge .js files from subfolders into one combined file批处理文件将子文件夹中的 .js 文件合并到一个组合文件中
【发布时间】:2010-04-15 16:45:07
【问题描述】:

我正在努力让它发挥作用。网络上有很多例子,但它们都做了一些与我的目标略有不同的事情,每次我认为我可以解决它时,我都会遇到一个对我来说毫无意义的错误。

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

cscript jslint.js < tmp.js

这将验证我的脚本是否已准备好合并到一个文件中以在 js 缩小器中使用,或者使用标准输出输出一堆错误。

但构成 tmp.js 的 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 等来完成我想要的工作,但无论我尝试什么,我都会得到一个错误。

【问题讨论】:

  • 把错误也贴出来就好了。
  • 我有太多要提的了。我花了好几个小时在上面,每次我都碰到了一堵砖墙。我不确定哪个错误最接近最终解决方案,因此我必须列出大约 3 或 4 次不同的尝试以及与之相关的错误。但是,如果需要,我将重新跟踪我的尝试并列出我在执行此操作时遇到的每个错误:)
  • 那将是个好主意。向我们展示您当前拥有的代码以及您遇到的错误。

标签: windows file batch-file merge subdirectory


【解决方案1】:

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

@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 没有'不存在,等等)。

【讨论】:

    【解决方案2】:

    批处理文件提示的好地方是DosTips.com

    【讨论】:

      【解决方案3】:

      看看http://nefariousdesigns.co.uk/archive/2010/02/website-builds-using-make/

      这篇文章是为 Linux 世界写的,但你仍然可以从中挽救一些东西。

      【讨论】:

        猜你喜欢
        • 2021-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-25
        • 1970-01-01
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多