Board logo

标题: [文本处理] 【已解决】批处理 替换文本里的一个内容 [打印本页]

作者: lf2vip    时间: 6 天前 21:01     标题: 【已解决】批处理 替换文本里的一个内容

本帖最后由 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"


如何搞请教大神
作者: lf2vip    时间: 6 天前 21:14

前面和中间都有空格
作者: newswan    时间: 6 天前 21:48

使用 sed
  1. sed -e '/AutoUpdateBehavior/ s/1/2/' appmanifest_730.acf
复制代码

作者: aloha20200628    时间: 6 天前 22:24

本帖最后由 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"
复制代码

作者: ppll2030    时间: 6 天前 23:05

假设替换的此行格式固定。
  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
复制代码

作者: lf2vip    时间: 5 天前 11:56

回复 5# ppll2030


    你这个没改变值  1改变成2  你的还是1
作者: lf2vip    时间: 5 天前 11:56

回复 4# aloha20200628


    大神,你的可以。还需要替换源文件  你这个只是新建了一个。再加个什么代码替换源文件
作者: lf2vip    时间: 5 天前 11:58

回复 4# aloha20200628


    最后生成的名字改成原文件名  会了会了 感谢大神 膜拜
作者: lf2vip    时间: 5 天前 12:40

回复 4# aloha20200628

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

批处理在其他地方 比如Z:\开机启动\run.bat   如何写?
作者: aloha20200628    时间: 5 天前 14:08

本帖最后由 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"
复制代码

作者: lf2vip    时间: 5 天前 14:18

回复 10# aloha20200628


    大神,完美




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