正在处理将修改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之类的任何其他程序/命令。
正如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;尽管输出正常)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。