找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14105|回复: 10

[文本处理] 【已解决】批处理 替换文本里的一个内容

[复制链接]
发表于 2024-6-27 21:01:44 | 显示全部楼层 |阅读模式
本帖最后由 lf2vip 于 2024-6-28 14:18 编辑

文件名字 appmanifest_730.acf

下面是内容
"AppState"
{
        "appid"        "730"
        "Universe"        "1"
        "LauncherPath"        "C:\\STEAM\\steam.exe"
        "name"        "Counter-Strike 2"
        "StateFlags"        "4"
        "installdir"        "Counter-Strike Global Offensive"
        "LastUpdated"        "1719445701"
        "LastPlayed"        "0"
        "SizeOnDisk"        "43698154882"
        "StagingSize"        "0"
        "buildid"        "14851576"
        "LastOwner"        "76561199200914276"
        "UpdateResult"        "0"
        "BytesToDownload"        "104368"
        "BytesDownloaded"        "104368"
        "BytesToStage"        "255226"
        "BytesStaged"        "255226"
        "TargetBuildID"        "14851576"
        "AutoUpdateBehavior"        "1"
        "AllowOtherDownloadsWhileRunning"        "2"
        "ScheduledAutoUpdate"        "0"
        "InstalledDepots"
        {
                "732"
                {
                        "manifest"        "5527525212517648822"
                        "size"        "7"
                }
                "731"
                {
                        "manifest"        "6712483474543732450"
                        "size"        "7"
                }
                "735"
                {
                        "manifest"        "6580335356328626676"
                        "size"        "7"
                }
                "736"
                {
                        "manifest"        "1103422707137997294"
                        "size"        "7"
                }
                "737"
                {
                        "manifest"        "2134805406035847947"
                        "size"        "7"
                }
                "738"
                {
                        "manifest"        "4738128412160191008"
                        "size"        "7"
                }
                "2347770"
                {
                        "manifest"        "1571723328764034052"
                        "size"        "41974064647"
                }
                "2347771"
                {
                        "manifest"        "1126882551082474974"
                        "size"        "708640329"
                }
                "2347774"
                {
                        "manifest"        "4342340049044317864"
                        "size"        "1015449899"
                }
        }
        "UserConfig"
        {
                "language"        "schinese"
        }
        "MountedConfig"
        {
                "language"        "schinese"
        }
        "SharedDepots"
        {
                "228988"        "228980"
                "228990"        "228980"
        }
}



修改        "AutoUpdateBehavior"        "1"
替换为         "AutoUpdateBehavior"        "2"


如何搞请教大神
 楼主| 发表于 2024-6-27 21:14:27 | 显示全部楼层
前面和中间都有空格
发表于 2024-6-27 21:48:51 | 显示全部楼层
使用 sed

  1. sed -e '/AutoUpdateBehavior/ s/1/2/' appmanifest_730.acf
复制代码
发表于 2024-6-27 22:24:35 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-6-27 23:47 编辑

回复 1# lf2vip

用批处的传统算法(须保留源文件中的空行+不用延迟变量的行计数器)...

  1. @echo off &findstr /n ".*" "appmanifest_730.acf">a.tmp
  2. for /f "tokens=1* delims=:" %%a in (' findstr /ic:"AutoUpdateBehavior" "a.tmp" ') do set "n=%%a"&set "s=%%b"
  3. (for /f "tokens=1* delims=:" %%a in (a.tmp) do if "%%a"=="%n%" (echo,%s:1=2%) else echo,%%b)>"appmanifest_730.new.acf"
  4. (del/q a.tmp)&pause&exit/b
复制代码

用第三方工具sed.exe(可从本坛下载)在cmd窗口一行流...
  1. sed -r "s/(AutoUpdateBehavior.*)1/\12/i" "appmanifest_730.acf">"appmanifest_730.new.acf"
复制代码
发表于 2024-6-27 23:05:26 | 显示全部楼层
假设替换的此行格式固定。
  1. @echo off
  2. for /f "delims=" %%a in ('type "appmanifest_730.acf"') do (
  3.         if "%%a" =="        "AutoUpdateBehavior"        "1"" (echo.        "AutoUpdateBehavior"        "2") else (echo.%%a)
  4. )>>appmanifest_730_new.acf
  5. exit/b
复制代码
 楼主| 发表于 2024-6-28 11:56:07 | 显示全部楼层
回复 5# ppll2030


    你这个没改变值  1改变成2  你的还是1
 楼主| 发表于 2024-6-28 11:56:53 | 显示全部楼层
回复 4# aloha20200628


    大神,你的可以。还需要替换源文件  你这个只是新建了一个。再加个什么代码替换源文件
 楼主| 发表于 2024-6-28 11:58:13 | 显示全部楼层
回复 4# aloha20200628


    最后生成的名字改成原文件名  会了会了 感谢大神 膜拜
 楼主| 发表于 2024-6-28 12:40:32 | 显示全部楼层
回复 4# aloha20200628

文件在这个目录
Z:\我的游戏\单机游戏\CSGO2 Steam\appmanifest_730.acf  

批处理在其他地方 比如Z:\开机启动\run.bat   如何写?
发表于 2024-6-28 14:08:33 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-6-28 14:21 编辑

回复 9# lf2vip

  1. @echo off &findstr /n ".*" "Z:\我的游戏\单机游戏\CSGO2 Steam\appmanifest_730.acf">a.tmp
  2. for /f "tokens=1* delims=:" %%a in (' findstr /ic:"AutoUpdateBehavior" "a.tmp" ') do set "n=%%a"&set "s=%%b"
  3. (for /f "tokens=1* delims=:" %%a in (a.tmp) do if "%%a"=="%n%" (echo,%s:1=2%) else echo,%%b)>"a.new.acf"
  4. move /y "a.new.acf" "Z:\我的游戏\单机游戏\CSGO2 Steam\appmanifest_730.acf"
  5. (del/q a.tmp)&pause&exit/b
复制代码

或用sed.exe一行流完成...

  1. sed -i -r "s/(AutoUpdateBehavior.*)1/\12/i" "Z:\我的游戏\单机游戏\CSGO2 Steam\appmanifest_730.acf"
复制代码
 楼主| 发表于 2024-6-28 14:18:22 | 显示全部楼层
回复 10# aloha20200628


    大神,完美
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 00:16 , Processed in 0.021556 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表