[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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


如何搞请教大神

前面和中间都有空格

TOP

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

TOP

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

TOP

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

TOP

回复 5# ppll2030


    你这个没改变值  1改变成2  你的还是1

TOP

回复 4# aloha20200628


    大神,你的可以。还需要替换源文件  你这个只是新建了一个。再加个什么代码替换源文件

TOP

回复 4# aloha20200628


    最后生成的名字改成原文件名  会了会了 感谢大神 膜拜

TOP

回复 4# aloha20200628

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

批处理在其他地方 比如Z:\开机启动\run.bat   如何写?

TOP

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

TOP

回复 10# aloha20200628


    大神,完美

TOP

返回列表