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

[文本处理] 批处理已经实现ini文件的内容替换,但是注释不会跟过来

  1. setlocal enabledelayedexpansion
  2. set a=C:\HollyCRM\HollyV8\fujian\plugins\Softphone.ini
  3. attrib -s -h %a%
  4. for /f "delims=" %%a in (%a%) do (
  5.    set str=%%a
  6.    set str=!str:2016=2015!&echo !str!>>1.ini
  7. )
  8. move 1.ini C:\HollyCRM\HollyV8\fujian\plugins\Softphone.ini
  9. pause
复制代码
代码如上,这样注释不会跟过来,如果把"delims="改成"delims=;"  注释的内容会跟过来,但是注释的【;】符号就没掉了,失去了注释的意义,请问怎么解决。

"tokens=*"

TOP

回复 2# 老刘1号
  1. setlocal enabledelayedexpansion
  2. set a=C:\HollyCRM\HollyV8\fujian\plugins\Softphone.ini
  3. attrib -s -h %a%
  4. for /f "tokens=* eol=" %%a in (%a%) do (
  5.    set str=%%a
  6.    set str=!str:2016=2015!&echo !str!>>1.ini
  7. )
  8. move 1.ini C:\HollyCRM\HollyV8\fujian\plugins\Softphone.ini
  9. pause
复制代码
我把delims=换成"tokens=* eol= 这两个参数之后,内容包括注释都跟过来了,唯一的一点遗憾就是,用了eol这个参数之后所有的空行都没了,不过已经实现效果 ,有没有更完美的方案把空行也保留住,就是只把2016改成2015,其他内容注释包括格式都一模一样的搬过来。。

TOP

试试 tokens=1,* delims=: 加上 findstr /n
参考:http://bbs.bathome.net/thread-11193-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# Batcher


    多谢大大,我先看看资料,再试试看。

TOP

回复 4# Batcher


    大大,我还有另外一个思路的疑问 ,.ini文件里只有两行update_time=2016-06-24 17:14:35 ,并且这两条内容是完全一样的,我如何通过定位update_time的方式来修改后面任意一位的日期浮动,两条同时修改。我想了好久,脑子快炸了。我目前这种写法只是替换.ini里所有2016数值。并不是最佳方案 。

TOP

回复 6# Speed乄Jay


    你的代码for那一段,加if判断,if "行的前xx个字符"=="update_time" set xxx

TOP

挺尸
  1. 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)"
复制代码
1

评分人数

TOP

回复 8# CrLf


    Long time no see

TOP

回复 8# CrLf


    看的不是太明白 ,但好像很厉害的样子

TOP

回复 8# CrLf


    失踪人口回归

TOP

返回列表