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

[文件操作] [已解决]批处理如何提取Unicode编码文件中的字符串

Unicode 格式文件如下:

aaa.inf(韩文字符)

INTL_GEO_NATION="134"
50_GRAY="50% 회색"
ASTERISK="일반 메시지"
BOXES="네모"
BRICK="벽돌색"
CLOSE_PROGRAM="프로그램 닫기"
CRITICAL_BATTERY_ALARM="배터리 위험 수준 경보"
CRITICAL_STOP="시스템 오류"
CRITTERS="V자"
DEFAULT_BEEP="기본 경고음"
DEFAULT_SOUND="기본 경고음"
DESERT="황토색"
DEVICE_CONNECT="장치 연결"
DEVICE_DISCONNECT="장치 연결 해제"
DEVICE_FAIL="장치 연결 오류"
DIAMONDS="마름모"
EGGPLANT="가지색"
EMPTY_RECYCLE_BIN="휴지통 비우기"
EVENT_VIEWER="이벤트 뷰어"
EXCLAMATION="경고 메시지"
EXIT_WINDOWS_NT="Windows 종료"
GAMES="게임"

我的需求是:如何从aaa.inf 中提取某行(不是全部)等号后面的字符串(不是全部),比如 DIAMONDS="마름모" 中的 “마름모”(不要引号),输出到一个变量,或一个新的Unicode文件中。
谢谢大师们出手相助!


附件(源文件):
76626yyn

回复 21# apang

知道了,谢谢 apang 老师。
这个问题解决了大问题,再次感谢!!!
76626yyn

TOP

回复 20# yuanyannian


    以后像这种与主题无关的问题请重新开贴
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. Set f = fso.OpenTextFile("test.txt", 1, false, -1)
  3. s = f.ReadAll : f.Close
  4. s = Replace(s, "HKCU,""", "HKLM,""WB-default\")
  5. s = Replace(s, "HKLM,""SYSTEM", "HKLM,""WB-setup")
  6. s = Replace(s, "HKLM,""SOFTWARE", "HKLM,""WB-software")
  7. s = "[DEFAULTINSTALL]" & vbCrLf & "ADDREG = AddReg" & vbCrLf & vbCrLf & s
  8. fso.OpenTextFile("test.txt", 2, true, -1).Write s
复制代码

TOP

回复 19# apang


太好了很成功,谢谢!!!

apang 老师,可否再帮忙写一个vbs(我是笨鸟):

1. 源文件见附件,是 unicode 格式,处理过程中及处理后要保持 unicode 格式不变。
2. 查找其中的 HKCU,",替换为 HKLM,"WB-default\。
3. 查找其中的 HKLM,"SYSTEM,替换为 HKLM,"WB-setup。
4. 查找其中的 HKLM,"SOFTWARE,替换为 HKLM,"WB-software。
5. 添加 [DEFAULTINSTALL] 一行。
6. 再添加 ADDREG = AddReg 一行。
先感谢!

源文件格式(节选):
76626yyn

TOP

回复 18# yuanyannian
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. Set f = fso.OpenTextFile("HIVEDEF.INF", 1, false, -1)
  3. s = Replace(f.ReadAll, """마름모""", """菱形""")
  4. f.Close
  5. fso.OpenTextFile("HIVEDEF.INF", 2, true, -1).Write s
复制代码
保存为test.vbs, unicode编码

TOP

回复 12# apang

这个 vbs 脚本可以,但请教:

如何直接查找、替换 unicode 格式中的 字符串,并保持源文件格式不变?
76626yyn

TOP

回复 14# DAIC


    以前我也以为是 1.0 的,后来才发现 win7 自带的其实是 2.0,被文件夹名骗了

TOP

回复 9# yuanyannian


    perl保存为.pl格式 python保存为.py格式,把里面的文件名替换成正确的,同目录下运行
前提是装了perl或者python的解释器。

TOP

回复 14# DAIC

是的,用你给的方法查看为 2.0
76626yyn

TOP

回复 13# yuanyannian


Win7的PowerShell版本应该是2.0吧
C:\>powershell -c "Get-Host | Select-Object Version"

Version
-------
2.0

TOP

回复 11# DAIC


    我的操作系统是 Windows 7 x64,powershell 我看了好像是 v1.0
76626yyn

TOP

vbs 应该也可以
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. txt = fso.OpenTextFile("HIVEDEF.INF", 1, flase, -1).ReadAll
  3. Set re = New RegExp
  4. re.Pattern = "^DIAMONDS=""(.*)"""
  5. re.IgnoreCase = true
  6. re.Global = true
  7. re.MultiLine = true
  8. For Each m in re.Execute(txt)
  9.     s = s & m.SubMatches(0) & vbCrLf
  10. Next
  11. fso.OpenTextFile("New_HIVEDEF.INF", 2, true, -1).Write s
复制代码

TOP

回复 10# yuanyannian


    什么操作系统?PowerShell的版本是?

TOP

回复 8# CrLf

powershell 运行后是一个空的 b.inf
76626yyn

TOP

回复 8# CrLf

恕我p盲,这几个如何使用?
76626yyn

TOP

返回列表