找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 77248|回复: 18

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

[复制链接]
发表于 2016-11-22 16:54:38 | 显示全部楼层 |阅读模式
我有2个文本  1.ini(文本为unidoce编码)    2.ini(文本为unidoce编码)   

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

评分

参与人数 2PB +2 收起 理由
Batcher + 4 感谢给帖子标题标注[已解决]字样
pcl_test -2 未按版规发帖

查看全部评分

发表于 2016-11-22 17:35:47 | 显示全部楼层
LZ先说说unidoce是什么编码
发表于 2016-11-22 17:43:48 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2016-11-22 17:49:00 | 显示全部楼层
回复 2# pcl_test


    不好意思,表面写错了,是unicode,最好是bat批处理。
 楼主| 发表于 2016-11-22 17:50:22 | 显示全部楼层
回复 3# pcl_test


    能不能用批处理,win7没有sell这个命令,并且我还需要结合做其他批处理。
发表于 2016-11-22 18:00:57 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2016-11-22 20:26:28 | 显示全部楼层
回复 6# pcl_test
版主大人,谢谢你帮我写代码,我在电脑运行的时候,会显示 iconv.saveText 不是内部处理命令,也不是运行程序。这个要怎么弄,太麻烦你了。
发表于 2016-11-22 20:48:15 | 显示全部楼层
回复 7# 394256623

6楼代码复制粘贴保存为bat文件,跟1.ini和2.ini放一起运行
 楼主| 发表于 2016-11-22 23:01:34 | 显示全部楼层
回复 8# pcl_test

    保存为bat后运行的就是这样提示的,1.ini 和2.ini都是同一个目录,是不是需要第三方插件,我是win系统
发表于 2016-11-22 23:24:52 | 显示全部楼层
回复 9# 394256623

win7/8/10用3楼代码呀
 楼主| 发表于 2016-11-23 09:35:18 | 显示全部楼层
回复 10# pcl_test


     使用3楼的代码,在BAT窗口看到是正常的显示,不过文字并没有输入到需要改变的1.ini里面。麻烦版主再帮忙改一下。谢谢了。
发表于 2016-11-23 10:13:52 | 显示全部楼层
回复 11# 394256623

自行搜索和学习如何输出/写入内容到指定文本的知识和方法
 楼主| 发表于 2016-11-23 14:15:26 | 显示全部楼层
本帖最后由 394256623 于 2016-11-23 14:17 编辑

回复 12# pcl_test


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

非常感谢了。。。。
发表于 2016-11-23 14:23:50 | 显示全部楼层
回复 13# 394256623

你在代码哪里加的>>3.ini?把你代码发出来看看
 楼主| 发表于 2016-11-23 14:42:58 | 显示全部楼层
本帖最后由 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')"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 08:59 , Processed in 0.022026 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表