无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3993|回复: 9
打印 上一主题 下一主题

[求助] 请教一个文本处理的批处理

[复制链接]
跳转到指定楼层
1#
发表于 2016-9-9 08:17:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
想做一个汉化包,比较汉化前后的注册表,得到形如以下的文本文件:

AAA
--------------
---------
BBB
--------
------------
AAA
---------
BBB
------
---------
AAA

......

其中-----表示文本内容,有多行不等,“AAA” "BBB" 各占一行,且有N多行。

只提取 BBB 与 AAA 之间文本内容,由于文件较大,手工提取麻烦,请教无忧高手:
如何用批处理来提取?
2#
发表于 2016-9-9 09:44:32 | 只看该作者
使用查找/替换,把AAA\BBB删掉不行吗?
回复

使用道具 举报

3#
发表于 2016-9-9 09:54:55 | 只看该作者
本帖最后由 阿松 于 2016-9-9 09:56 编辑

不用自己比较提取。用regshot自动记录,汉化前做一个快照,汉化后再做一个快照,会在C盘HIVE目录下生成一个 Report.1.RedoReg.txt ,就是你要的注册表。
回复

使用道具 举报

4#
 楼主| 发表于 2016-9-9 10:50:47 | 只看该作者
谢谢回复!
替换只能删除BBB或AAA的所在行,不能提取这两行间的内容
regshot也试过,好像会出错,得不到结果。才使用命令行FC比较
用批处理处理文本有一定难度,使用Excell也行
回复

使用道具 举报

5#
发表于 2016-9-9 20:18:11 | 只看该作者
type 你的注册表文件|find /i /v "aaa"|find /i /v "bbb">1.txt
回复

使用道具 举报

6#
发表于 2016-9-9 21:44:49 | 只看该作者
楼主是想,将每个AAA……BBB之间的内容提取到一个单独的文件里?还是删除所有的AAA和BBB,这样完全可以用高级点的文本编辑器搞定,比如Notepad++,替换为空就可以了
回复

使用道具 举报

7#
发表于 2016-9-9 23:23:36 | 只看该作者
下面的批处理用于自动删除AAA和BBB


  1. @echo off
  2. rem 将需要处理的文件拖到批处理图标上,或者将批处理的快捷方式放到发送到文件夹(运行shell:sendto)
  3. echo 处理中...
  4. rem 设置输出文件为原目录下 原文件名_修改_当前时间
  5. set "outfile=%~dp1%~n1_修改_%time:~0,2%%time:~3,2%%time:~6,2%%~x1"
  6. color>"%outfile%"
  7. for /f "delims=" %%A in ('findstr /n .* "%~f1"') do (
  8.         set "var=%%A"
  9.         setlocal enabledelayedexpansion
  10.         set var=!var:AAA=!
  11.         set var=!var:BBB=!
  12.         set var=!var:*:=!
  13.         (echo;!var!)>>"%outfile%"
  14.         endlocal
  15. )
  16. explorer /select,"%outfile%"
  17. echo;
  18. echo:
  19. echo/
  20. color 2f
  21. echo 搞定!
  22. ping 127.1 -n 3 >nul 2>nul
  23. exit
复制代码
回复

使用道具 举报

8#
 楼主| 发表于 2016-9-10 17:04:36 | 只看该作者
本帖最后由 2010laocfan 于 2016-9-10 17:13 编辑

谢谢关注并回复!
我是想将每个BBB……AAA之间的内容提取到一个单独的文件里,如原题提取后成为:

BBB
--------
------------
BBB
------
---------
BBB

......

最后把BBB替换为空就行了,但测试了上面两个批处理都不能达到要求,例如我把t01.reg
与t02.reg分别替换第一个批处理的AAA、BBB,运行前后结果比较如下图:

点评

你的意思其实就是对比前后两个注册表,提取出不同的部分???? 为何不用Registry Workshop,快照对比,直接可以保存不同的部分为reg文件 用sc对比再提取的方法太复杂了……  详情 回复 发表于 2016-9-10 17:17
回复

使用道具 举报

9#
发表于 2016-9-10 17:17:00 来自手机 | 只看该作者
2010laocfan 发表于 2016-9-10 17:04
谢谢关注并回复!
我是想将每个BBB……AAA之间的内容提取到一个单独的文件里,如原题提取后成为:


你的意思其实就是对比前后两个注册表,提取出不同的部分????


为何不用Registry Workshop,快照对比,直接可以保存不同的部分为reg文件

用sc对比再提取的方法太复杂了……
回复

使用道具 举报

10#
 楼主| 发表于 2016-9-10 21:59:17 | 只看该作者
本帖最后由 2010laocfan 于 2016-9-10 22:01 编辑

谢谢提醒!用Registry Workshop试了,得到的文件有2M多而FC比较,手工提取的文件只有80多K,不知为何相差这么大。
实际上微软是有这个语言包的,只不过有点大,安装后还要设置,重启才可以,本想省去设置,由于效果不太好、又无卸载,我已放弃。谢谢大家的帮助!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-17 06:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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