Board logo

标题: [文本处理] 批处理如何修改文本中指定位置的内容? [打印本页]

作者: qiyuexx    时间: 2022-8-5 16:44     标题: 批处理如何修改文本中指定位置的内容?

D:\123.txt里记录了一些配置文件,想利用bat把server_ip后面的内容改成其他ip,要输入的内容用set /p来获取
注:有的是192.168.1.100 有的不是,也就是说server_ip后面的内容是未知的

{
    "server_ip": "192.168.1.100",
    "server_port": "7010",
        "config_id":"2",
        "local_run":"0"
}


麻烦大家给个答案,非常感谢!!
作者: hfxiang    时间: 2022-8-6 11:17

  1. @echo off&setlocal
  2. set /p server_ip=请指定ip地址(如:192.168.1.100 ):
  3. echo;{
  4. echo;    "server_ip": "%server_ip%",
  5. echo;    "server_port": "7010",
  6. echo;        "config_id":"2",
  7. echo;        "local_run":"0"
  8. echo;}
  9. endlocal
  10. pause
复制代码

作者: qiyuexx    时间: 2022-8-8 09:43

回复 2# hfxiang


    非常感谢您的回复,但不能改变配置文件原有结构
作者: qiyuexx    时间: 2022-8-8 09:47

本帖最后由 qiyuexx 于 2022-8-8 09:48 编辑

回复 2# hfxiang


     现已知配置文件里这一行是这样的"server_ip": "192.168.1.*",ip加*是因为ip不固定,但原配置文件已有,并不是一个%变量%,所以这样写不是很合适 还是非常感谢
作者: qixiaobin0715    时间: 2022-8-8 12:51

本帖最后由 qixiaobin0715 于 2022-8-8 12:55 编辑
  1. @echo off
  2. set /p _IP=Please enter the new IP Address:
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in (123.txt) do (
  5.     set "str=%%a"
  6.     if not "!str:server_ip=!"=="!str!" (
  7.         for /f "tokens=1* delims=:" %%i in ("%%a") do (
  8.             set str=%%i: "%_IP%",
  9.         )
  10.     )
  11.     echo,!str!
  12. )
  13. pause
复制代码

作者: hfxiang    时间: 2022-8-9 09:02

回复 3# qiyuexx


    请明确列示清楚原文件及修改后的文件情况,否则无法正确理解需求
作者: qiyuexx    时间: 2022-8-10 09:52

回复 5# qixiaobin0715


    感谢回复,好像不生效,麻烦您再给看一下,我把操作过程放云盘了,直接预览就好
链接: https://pan.baidu.com/s/1p5a8kePb6ss1d7FIO35K-w 提取码: e2rb 复制这段内容后打开百度网盘手机App,操作更方便哦
作者: qixiaobin0715    时间: 2022-8-10 10:03

回复 7# qiyuexx
请把你的1.txt和1.bat文件传到网盘,帮你看看!
作者: qiyuexx    时间: 2022-8-10 10:05

回复 8# qixiaobin0715


    https://qiyuexx.lanzouv.com/idbAU09as6ih

麻烦您了
作者: qiyuexx    时间: 2022-8-10 10:07

回复 6# hfxiang


    原文件1.txt内容如下
{
    "server_ip": "未知ip",
    "server_port": "7010",
        "config_id":"2",
        "local_run":"0"
}
希望可以通过批处理把未知的ip修改成我想要的ip
作者: qixiaobin0715    时间: 2022-8-10 10:13

用你的文件测试,我这里显示没有问题:
  1. Please enter the new IP Address:201.201.1.168
  2. {
  3.     "server_ip": "201.201.1.168",
  4.     "server_port": "7010",
  5.         "config_id":"2",
  6.         "local_run":"0"
  7. }
  8. 请按任意键继续. . .
复制代码
是不是路径没写对?
作者: qixiaobin0715    时间: 2022-8-10 10:18

我是把修改内容显示出来,没有修改源文件。
作者: qiyuexx    时间: 2022-8-10 13:32

回复 11# qixiaobin0715


    我这边cmd里确实显示已经改了 但是再打开1.txt里 还是没有改之前的样子 麻烦您看一下是不是这样
作者: qiyuexx    时间: 2022-8-10 13:33

本帖最后由 qiyuexx 于 2022-8-10 13:34 编辑

回复 13# qixiaobin0715


    原来是这样啊  麻烦您再给改改 需要修改一下源文件 ,不用显示出来 最终目的就是快速修改源文件,因为实际环境中需要修改的1.txt,2.txt.....有好多个
作者: qiyuexx    时间: 2022-8-10 13:35

回复 12# xczxczxcz


    多谢提供更多角度 实际环境里没有安装ps




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2