标题: [文本处理] 【已解决】批处理 替换文本里的一个内容 [打印本页]
作者: lf2vip 时间: 2024-6-27 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 时间: 2024-6-27 21:14
前面和中间都有空格
作者: newswan 时间: 2024-6-27 21:48
使用 sed- sed -e '/AutoUpdateBehavior/ s/1/2/' appmanifest_730.acf
复制代码
作者: aloha20200628 时间: 2024-6-27 22:24
本帖最后由 aloha20200628 于 2024-6-27 23:47 编辑
回复 1# lf2vip
用批处的传统算法(须保留源文件中的空行+不用延迟变量的行计数器)...
- @echo off &findstr /n ".*" "appmanifest_730.acf">a.tmp
- for /f "tokens=1* delims=:" %%a in (' findstr /ic:"AutoUpdateBehavior" "a.tmp" ') do set "n=%%a"&set "s=%%b"
- (for /f "tokens=1* delims=:" %%a in (a.tmp) do if "%%a"=="%n%" (echo,%s:1=2%) else echo,%%b)>"appmanifest_730.new.acf"
- (del/q a.tmp)&pause&exit/b
复制代码
用第三方工具sed.exe(可从本坛下载)在cmd窗口一行流...
- sed -r "s/(AutoUpdateBehavior.*)1/\12/i" "appmanifest_730.acf">"appmanifest_730.new.acf"
复制代码
作者: ppll2030 时间: 2024-6-27 23:05
假设替换的此行格式固定。- @echo off
- for /f "delims=" %%a in ('type "appmanifest_730.acf"') do (
- if "%%a" ==" "AutoUpdateBehavior" "1"" (echo. "AutoUpdateBehavior" "2") else (echo.%%a)
- )>>appmanifest_730_new.acf
- exit/b
复制代码
作者: lf2vip 时间: 2024-6-28 11:56
回复 5# ppll2030
你这个没改变值 1改变成2 你的还是1
作者: lf2vip 时间: 2024-6-28 11:56
回复 4# aloha20200628
大神,你的可以。还需要替换源文件 你这个只是新建了一个。再加个什么代码替换源文件
作者: lf2vip 时间: 2024-6-28 11:58
回复 4# aloha20200628
最后生成的名字改成原文件名 会了会了 感谢大神 膜拜
作者: lf2vip 时间: 2024-6-28 12:40
回复 4# aloha20200628
文件在这个目录
Z:\我的游戏\单机游戏\CSGO2 Steam\appmanifest_730.acf
批处理在其他地方 比如Z:\开机启动\run.bat 如何写?
作者: aloha20200628 时间: 2024-6-28 14:08
本帖最后由 aloha20200628 于 2024-6-28 14:21 编辑
回复 9# lf2vip - @echo off &findstr /n ".*" "Z:\我的游戏\单机游戏\CSGO2 Steam\appmanifest_730.acf">a.tmp
- for /f "tokens=1* delims=:" %%a in (' findstr /ic:"AutoUpdateBehavior" "a.tmp" ') do set "n=%%a"&set "s=%%b"
- (for /f "tokens=1* delims=:" %%a in (a.tmp) do if "%%a"=="%n%" (echo,%s:1=2%) else echo,%%b)>"a.new.acf"
- move /y "a.new.acf" "Z:\我的游戏\单机游戏\CSGO2 Steam\appmanifest_730.acf"
- (del/q a.tmp)&pause&exit/b
复制代码
或用sed.exe一行流完成...
- sed -i -r "s/(AutoUpdateBehavior.*)1/\12/i" "Z:\我的游戏\单机游戏\CSGO2 Steam\appmanifest_730.acf"
复制代码
作者: lf2vip 时间: 2024-6-28 14:18
回复 10# aloha20200628
大神,完美
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |