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


这样比较简洁
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=1* delims=:" %%h in ('findstr /n "." "1.ini"') do (
  4.     set "str=%%i"
  5.     if "!str:SourcePath=!" neq "%%i" (
  6.         echo SourcePath=C:\Windows
  7.     ) else if "!str:NeedUpdatePath=!" neq "%%i" (
  8.         echo NeedUpdatePath=C:\Windows
  9.     ) else (
  10.         echo,%%i
  11.     )
  12. ))>"2.ini"
复制代码

TOP

回复 4# codegay


    冒号是 findstr 生成的,跟 ini 文件没啥关系吧。

TOP

回复 8# yym黄诗瑶


用记事本打开原始的ini
文件
另存为
选择 ANSI 编码
再执行批处理脚本试试

TOP

研究了一下没怎么看看懂

如果有哪里不懂的话,可以回帖提问。

TOP

回复 15# yym黄诗瑶


for /f %%h ... 这种命令会导致 ini 文件里面分号开头的行被忽略
findstr /n "." "1.ini" 的目的是为了在每行开头加上行号和冒号
for /f "tokens=1* delims=:" %%h ... 以冒号作为分隔符,%%h获取到行号(在本例中没有用处),%%i获取到剩余内容(也就是ini文件原始内容)
set "str=%%i" 变量str里面保存的就是ini某一行的内容

"!str:SourcePath=!" 本身是一个字符串替换,意思把变量str里面SourcePath这个字符串替换为空
if "!str:SourcePath=!" neq "%%i" 是为了判断该行内容是否包含字符串 SourcePath

TOP

返回列表