Board logo

标题: [文本处理] [已解决]求大佬帮忙写个批处理修改ini文件内容,不胜感激。 [打印本页]

作者: 差点就很帅    时间: 2020-10-29 18:02     标题: [已解决]求大佬帮忙写个批处理修改ini文件内容,不胜感激。

本帖最后由 差点就很帅 于 2020-10-31 17:38 编辑

需要两个选项,并且可以在任意目录运行。
选项一 修改 D:\Hisense\HsVip50\HsCMP.ini 里的 192.168.10.7 为 192.168.10.2
选项二 修改 D:\Hisense\HsVip50\HsCMP.ini 里的  192.168.10.2 为 192.168.10.7  
修改成功后按任意键退出~
谢谢热心的大佬。
作者: Batcher    时间: 2020-10-29 23:53

回复 1# 差点就很帅


分享一种看起来比较LOW,但是生产环境里面比较推荐的思路:
分别准备两个文件
HsCMP.ini_2.bak 保存 192.168.10.2 对应的内容
HsCMP.ini_7.bak 保存 192.168.10.7 对应的内容
根据用户输入,用对应的bak文件覆盖掉ini文件。
这样做的好处是可以避免文件中的特殊字符或其他原因导致的替换文本失败。
  1. @echo off
  2. set "FileProduct=D:\Hisense\HsVip50\HsCMP.ini"
  3. set "FileChoose1=D:\Hisense\HsVip50\HsCMP.ini_2.bak"
  4. set "FileChoose2=D:\Hisense\HsVip50\HsCMP.ini_7.bak"
  5. :loop
  6. set "input=0"
  7. echo 输入1:设置192.168.10.2,输入2:设置192.168.10.7
  8. set /p "input="
  9. if "%input%" equ "1" (
  10.     copy /y "%FileChoose1%" "%FileProduct%"
  11. ) else if "%input%" equ "2" (
  12.     copy /y "%FileChoose2%" "%FileProduct%"
  13. ) else (
  14.     goto :loop
  15. )
复制代码

作者: yhcfsr    时间: 2020-10-30 10:15

  1. #&cls&@Powershell "& {[ScriptBlock]::Create("'#' + ([io.file]::ReadAllText('%~f0',[text.encoding]::Default))").Invoke()}" & pause & exit
  2. $file = 'D:\Hisense\HsVip50\HsCMP.ini ';
  3. '[1] 192.168.10.7 ==> 192.168.10.2 ';
  4. '[2] 192.168.10.2 ==> 192.168.10.7 ';
  5. [int]$ch = Read-Host -Prompt '请选择 ';
  6. $text = [io.file]::ReadAllText($file, [text.encoding]::Default);
  7. switch($ch)
  8. {
  9.     {$_ -eq 1}{$text = $text -replace '192.168.10.7','192.168.10.2'; break;}
  10.     {$_ -eq 2}{$text = $text -replace '192.168.10.2','192.168.10.7'; break;}
  11. }
  12. [io.file]::WriteAllText($file,$text,[text.encoding]::Default);
复制代码

作者: 差点就很帅    时间: 2020-10-31 17:39

感谢楼上两位热心的大佬。




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