首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用批处理脚本查找替换变量文本的整个字符串行

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

Stack Overflow用户
提问于 2019-12-10 18:08:32
回答 1查看 283关注 0票数 1

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

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

这是一个示例代码片段:

代码语言:javascript
复制
  "scripts": {
    "test": "any text can go here"
  },

我想要做的是将整个"test“行替换为:

代码语言:javascript
复制
"test": "jest --coverage"

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

代码语言:javascript
复制
SETLOCAL ENABLEDELAYEDEXPANSION

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

有没有人可以帮我修改一下,这样:-它可以容纳一个带空格的字符串-考虑到"any text can go here"值总是不同的,它可以用"test"替换整行

但请注意,我不能使用任何其他程序/命令,如sed或fnr.bat等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-10 19:20:19

正如Compo已经评论的那样,batch不是适合这项工作的工具,但是当你不能使用任何其他工具(如PowerShell)时:

代码语言:javascript
复制
@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的原因;尽管输出是可以的)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59264737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档