一千萬個為什麽

搜索

批處理文件將.js文件從子文件夾合並到一個組合文件中

我正在努力讓這個工作。網上有很多例子,但是他們都做了一些與我打算做的事情略有不同的事情,每當我想我能解決它時,我就會遇到一個對我沒有任何意義的錯誤。

放棄JSLint.VS插件後,我正在嘗試創建一個批處理文件,我可以從Visual Studio構建事件調用,也可以從巡航控件調用,這將為項目生成JSLint警告。最終目標是獲取一個可以傳遞給jslint的組合js文件,使用:

cscript jslint.js < tmp.js

這將驗證我的腳本是否已準備好合並到一個文件中以便在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

理想的解決方案是能夠按以下方式調用批處理文件:

jslint.bat %ProjectPath%

然後,這會將項目中的所有js文件合並到一個temp js文件中。通過這種方式,我可以靈活地將項目傳遞給批處理文件。

我一直在努力使這個工作與copy,xcopy,type和echo,並使用for do循環,使用dir/s等,使它做我想要的,但無論我嘗試什麽,我得到一個錯誤。

最佳答案

您可以使用以下內容創建批處理文件:

@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 尚不存在,等等。

轉載註明原文: 批處理文件將.js文件從子文件夾合並到一個組合文件中