Windows 使用批处理脚本查找替换变量文本的整个字符串行
处理将修改package.json文件的批处理脚本 基本上,我需要替换每个json文件的Windows 使用批处理脚本查找替换变量文本的整个字符串行,windows,batch-file,cmd,Windows,Batch File,Cmd,处理将修改package.json文件的批处理脚本 基本上,我需要替换每个json文件的“test”部分 这是一个示例代码段: "scripts": { "test": "any text can go here" }, 我要做的是将整个“测试”行替换为: "test": "jest --coverage" 我只想出了一个脚本来替换字符串(没有空格): 有人能帮我修改一下吗 -它可以容纳带有空格的字符串 -它可以用“test”替换整行,因为“任何文本都可以放在这里”值总是不同
“test”
部分
这是一个示例代码段:
"scripts": {
"test": "any text can go here"
},
我要做的是将整个“测试”行替换为:
"test": "jest --coverage"
我只想出了一个脚本来替换字符串(没有空格):
有人能帮我修改一下吗
-它可以容纳带有空格的字符串
-它可以用“test”
替换整行,因为“任何文本都可以放在这里”
值总是不同的
但请注意,我不能使用任何其他程序/命令,如sed或fnr.bat或其他 正如Compo已经评论的那样,批处理不是适合该作业的工具,但是当您不能使用任何其他工具(如PowerShell)时: 它保留格式和空行,但在某些有毒字符方面存在一些问题
(这就是为什么
2>nul
;尽管输出正常)对于编辑文件,不要选择cmd.exe
命令,而是使用powershell.exe
及其ConvertFrom Json
和ConvertTo Json
功能。正如Compo已经说过的那样,批处理(cmd.exe)对于操作文本文件来说非常糟糕。您可以使用来轻松可靠地完成任务-jrepl“test”“replacement text”/l/b/e/f“temp.txt”/o-
@dbenham:OP不想替换test
,但之后会替换未知字符串。(毫无疑问,jrepl
也能做到这一点)
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in (temp.txt) do (
SET s=%%a
SET s=!s:test=newText!
echo !s!>>yourtempfilename.txt
)
pause
@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