首页 > 解决方案 > 如何在 Windows 上创建批处理脚本以从 config.json 查找字符串并将其替换为多个缩小文件

问题描述

这是我第一次创建批处理脚本文件。我的问题可以重复,但我没有找到任何满足我要求的问题或解决方案。

我需要在 Windows 上创建一个批处理脚本文件,以从 config.json 文件值更改 min.js 多个文件和一个 index.html 文件中的 URL。

例如,我有一个 JSON 文件:

{
   "APIUrl": "http:\\service.test.com",   
   "BaseUrl": "http:\\www.test.com"
}

现在,我需要用 APIUrl 更改“h​​ttp:\service2.test.com”,用 BaseURL 更改“h​​ttp:\www.test2.com”。

我找到了许多解决方案来查找和替换批处理文件的脚本。但是当我运行批处理文件时,它会从 min.js 中删除整个脚本而不替换 URL 字符串。

也许脚本逻辑正在检查结束行,并且 min.js 文件脚本总是写在一行中,因此替换删除整个脚本的文本,这只是我的想法,因为脚本中编写了结束行脚本。

我用谷歌搜索并从 StackOverflow 中找到下面的代码并将其粘贴到 batchscript.bat,但在运行 batchscript.bat 时,它正在删除整个脚本,只留下最后一行注释“//# sourceMappingURL=app.min.map”文件。这就是我不发布此代码的原因。

@echo off 
setlocal EnableExtensions DisableDelayedExpansion

set "search=<http://server/application/>0"
set "replace=<http://someurl.test.com>"

set "textFile=*.*.js"
set "rootDir=./js"

for /R "%rootDir%" %%j in ("%textFile%") do (
    for /f "delims=" %%i in ('type "%%~j" ^& break ^> "%%~j"') do (
        set "line=%%i"
        setlocal EnableDelayedExpansion
        set "line=!line:%search%=%replace%!"
        >>"%%~j" echo(!line!
        endlocal
    )
)

endlocal
pause

要执行此操作,您可以获取任何“.min.js”文件并从该文件中查找并替换文本。

标签: batch-file

解决方案


如果文件名是 test.json 那么我们可以执行以下操作。

cat test.json | jq '.APIUrl="test123"'

推荐阅读