开发者社区> 问答> 正文

使用批处理脚本查找替换可变文本的整个字符串行

正在处理将修改package.json文件的批处理脚本。

基本上,我需要替换"test"每个json文件的部分。

这是一个示例片段:


  "scripts": {
    "test": "any text can go here"
  },

我要做的是将整个“测试”行替换为:

"test": "jest --coverage"

我只想出一个脚本来替换字符串(不带空格):

SETLOCAL ENABLEDELAYEDEXPANSION

for /f "delims=" %%a in (temp.txt) do (
    SET s=%%a
    SET s=!s:test=newText!
    echo !s!>>yourtempfilename.txt
)
pause

谁能帮我修改一下,以便:-它可以容纳带空格的字符串- "test"考虑"any text can go here"值总是不同,它可以替换整行

请注意,尽管我不能使用sed或fnr.bat之类的任何其他程序/命令。

展开
收起
Puppet 2019-12-10 23:09:19 709 0
1 条回答
写回答
取消 提交回答
  • 正如Compo已经指出的那样,批处理不是适合该工作的工具,但是当您不能使用其他任何工具(例如PowerShell)时:

    
    @echo off
    setlocal disabledelayedexpansion
    set "newtext=some other text here"
    (for /f "tokens=1* delims=]" %%a in ('find /n /v "" temp.txt') do (
      echo %%b|findstr /rc:"\ *\"test\":\ \".*\"" >nul && (
        for /f "delims=:" %%c in ("%%b") do echo %%c: "%newtext%"
        ) || echo/%%b
    ))>yourtempfilename.txt 2>nul
    

    它保持格式和空行,但是某些毒害字符存在一些问题(这就是为什么2>nul;尽管输出正常)

    2019-12-10 23:09:50
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载