标题: [文本处理] 批处理已经实现ini文件的内容替换,但是注释不会跟过来 [打印本页]
作者: Speed乄Jay 时间: 2017-9-7 16:33 标题: 批处理已经实现ini文件的内容替换,但是注释不会跟过来
- setlocal enabledelayedexpansion
- set a=C:\HollyCRM\HollyV8\fujian\plugins\Softphone.ini
- attrib -s -h %a%
- for /f "delims=" %%a in (%a%) do (
- set str=%%a
- set str=!str:2016=2015!&echo !str!>>1.ini
- )
-
- move 1.ini C:\HollyCRM\HollyV8\fujian\plugins\Softphone.ini
- pause
复制代码
代码如上,这样注释不会跟过来,如果把"delims="改成"delims=;" 注释的内容会跟过来,但是注释的【;】符号就没掉了,失去了注释的意义,请问怎么解决。
作者: 老刘1号 时间: 2017-9-7 20:01
"tokens=*"
作者: Speed乄Jay 时间: 2017-9-7 20:12
回复 2# 老刘1号 - setlocal enabledelayedexpansion
- set a=C:\HollyCRM\HollyV8\fujian\plugins\Softphone.ini
- attrib -s -h %a%
- for /f "tokens=* eol=" %%a in (%a%) do (
- set str=%%a
- set str=!str:2016=2015!&echo !str!>>1.ini
- )
-
- move 1.ini C:\HollyCRM\HollyV8\fujian\plugins\Softphone.ini
- pause
复制代码
我把delims=换成"tokens=* eol= 这两个参数之后,内容包括注释都跟过来了,唯一的一点遗憾就是,用了eol这个参数之后所有的空行都没了,不过已经实现效果 ,有没有更完美的方案把空行也保留住,就是只把2016改成2015,其他内容注释包括格式都一模一样的搬过来。。
作者: Batcher 时间: 2017-9-7 20:32
试试 tokens=1,* delims=: 加上 findstr /n
参考:http://bbs.bathome.net/thread-11193-1-1.html
作者: Speed乄Jay 时间: 2017-9-7 21:46
回复 4# Batcher
多谢大大,我先看看资料,再试试看。
作者: Speed乄Jay 时间: 2017-9-7 22:01
回复 4# Batcher
大大,我还有另外一个思路的疑问 ,.ini文件里只有两行update_time=2016-06-24 17:14:35 ,并且这两条内容是完全一样的,我如何通过定位update_time的方式来修改后面任意一位的日期浮动,两条同时修改。我想了好久,脑子快炸了。我目前这种写法只是替换.ini里所有2016数值。并不是最佳方案 。
作者: taofan712 时间: 2017-9-7 22:14
回复 6# Speed乄Jay
你的代码for那一段,加if判断,if "行的前xx个字符"=="update_time" set xxx
作者: CrLf 时间: 2017-9-8 16:26
挺尸- mshta http://bathome.net/s/hta/index.html "var file=""C:\HollyCRM\HollyV8\fujian\plugins\Softphone.ini"";save(type(file).replace(/2016/g,'2015'),file)"
复制代码
作者: 523066680 时间: 2017-9-8 16:48
回复 8# CrLf
Long time no see
作者: Speed乄Jay 时间: 2017-9-10 08:27
回复 8# CrLf
看的不是太明白 ,但好像很厉害的样子
作者: 老刘1号 时间: 2017-9-10 09:02
回复 8# CrLf
失踪人口回归
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |