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

[文本处理] [已解决]批处理怎样不改变原编码将两个字符串之间的内容替换为另一个文本中的内容?

我有2个文本  1.ini(文本为unidoce编码)    2.ini(文本为unidoce编码)   

现在想把1.ini文件中的:  [修改器集] 到  CurrentModSet=1   之间的内容替换为  2.ini的内容,直接在1.ini文件上面替换,完成后1.ini同样为 (unidoce编码) 。 下面是文件参考 ([修改器集] 到CurrentModSet=1 之间内容行数不一定,所在的行也不一定,唯一能参考就是 [修改器集] 到CurrentModSet=1 和 修改器集名称 和ModSetEntry 是其他地方不会出现的)因为这个是软件的配置文件,必须为 unidoce编码才能识别。
2

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 4
    • pcl_test: 未按版规发帖PB -2

LZ先说说unidoce是什么编码

TOP

  1. powershell -c "[IO.File]::ReadAllText('1.ini', [Text.Encoding]::Unicode) -replace '\[修改器集][\s\S]+?CurrentModSet=1',[IO.File]::ReadAllText('2.ini', [Text.Encoding]::Unicode).trim()"
  2. pause
复制代码

TOP

回复 2# pcl_test


    不好意思,表面写错了,是unicode,最好是bat批处理。

TOP

回复 3# pcl_test


    能不能用批处理,win7没有sell这个命令,并且我还需要结合做其他批处理。

TOP

  1. mshta http://bathome.net/s/hta/index.html "iconv.saveText(type('1.ini').replace(/\[修改器集][\s\S]+?CurrentModSet=1/,type('2.ini').replace(/\s*$/,'')),'result.txt','UTF-16le')"
  2. pause
复制代码

TOP

回复 6# pcl_test
版主大人,谢谢你帮我写代码,我在电脑运行的时候,会显示 iconv.saveText 不是内部处理命令,也不是运行程序。这个要怎么弄,太麻烦你了。

TOP

回复 7# 394256623

6楼代码复制粘贴保存为bat文件,跟1.ini和2.ini放一起运行

TOP

回复 8# pcl_test

    保存为bat后运行的就是这样提示的,1.ini 和2.ini都是同一个目录,是不是需要第三方插件,我是win系统

TOP

回复 9# 394256623

win7/8/10用3楼代码呀

TOP

回复 10# pcl_test


     使用3楼的代码,在BAT窗口看到是正常的显示,不过文字并没有输入到需要改变的1.ini里面。麻烦版主再帮忙改一下。谢谢了。

TOP

回复 11# 394256623

自行搜索和学习如何输出/写入内容到指定文本的知识和方法

TOP

本帖最后由 394256623 于 2016-11-23 14:17 编辑

回复 12# pcl_test


    我在代码后面添加  >>3.INI后,生成的文件还是  ansi编码,不是UNICODE编码。 这样的话就不是在原文件修改了,是生成新文件了。麻烦版主大大帮忙写个完整,就在  1.ini文件基础上面修改,不改变编码和名称。

非常感谢了。。。。

TOP

回复 13# 394256623

你在代码哪里加的>>3.ini?把你代码发出来看看

TOP

本帖最后由 394256623 于 2016-11-23 14:54 编辑

回复 14# pcl_test


   我是这样加的代码,这样会生成3.ini(不过是ANSI编码)
   powershell -c "[IO.File]::ReadAllText('1.ini', [Text.Encoding]::Unicode) -replace '\[修改器集][\s\S]+?CurrentModSet=1',[IO.File]::ReadAllText('2.ini', [Text.Encoding]::Unicode).trim()" >>3.ini   


你写的这下面那串代码在win10上面可以运行,不知道怎么的在家里就无法运行,家里运行会打开 http://bathome.net/s/hta/index.html 这个网址,办公室运行就不会打开网址,并且运行还会生成 result.txt 这个最终文件,这个文件编码就是正确的。 如果去掉mshta http://bathome.net/s/hta/index.html  和后面的引号,就会显示  iconv.saveText不是可执行程序。(这个方式需要能能接到你们网站才行,估计是我们这边有些网络不支持访问,或者访问很慢导致的情况)

   mshta http://bathome.net/s/hta/index.html "iconv.saveText(type('1.ini').replace(/\[修改器集][\s\S]+?CurrentModSet=1/,type('2.ini').replace(/\s*$/,'')),'1.ini','UTF-16le')"

TOP

返回列表