返回列表 发帖

[文本处理] BAT 输出 带有BOM UTF8编码本文配置文档。

先上代码,再后续解析和废话。。。。。。。。。。。
  1. :Srf
  2. Set "开始行关键字=[0804_list]"
  3. Set 结束行=23
  4. For /f "tokens=1,* delims=:" %%Y in ('FindStr /N ".*" %~dnxp0 ^| Find ":%开始行关键字%"' ) do ( Set 开始行=%%Y )
  5. Set/a 开始行=%开始行%+0
  6. Echo.//4=>%Temp%\UTF-16LE.Txt&Certutil -Decode -f %Temp%\UTF-16LE.Txt %Temp%\UTF-16LE.Txt>Nul
  7. Echo.77u/>%Temp%\UTF8-BOM.Txt&Certutil -Decode -f %Temp%\UTF8-BOM.Txt %Temp%\SRF.Txt>Nul
  8. :Srf循环
  9. For /f "tokens=1,2,* delims=:" %%A in ('FindStr /N /O ".*" %~dnxp0 ^| FindStr /B "\<%开始行%:"') do ( Set/a 结束行-=1,开始行+=1
  10. If "%结束行%"=="0" Goto,Srf结束
  11. Echo.%%C>>%Temp%\ANSI.Txt & Goto,Srf循环 )
  12. :Srf结束
  13. Cmd /d /u /c Type %Temp%\ANSI.Txt>%Temp%\ANSI-CR.Txt
  14. Chcp 65001
  15. Type %Temp%\ANSI-CR.Txt>>%Temp%\UTF-16LE.Txt
  16. Type %Temp%\UTF-16LE.Txt>>%Temp%\SRF.Txt
  17. Chcp 936
  18. Del %Temp%\UTF-16LE.Txt %Temp%\UTF8-BOM.Txt %Temp%\ANSI-CR.Txt %Temp%\ANSI0.Txt
  19. Start "" %~DP0\.TOOL\QQ拼音输入法\TSFToolv64.exe /loadcfg:%Temp%\SRF.Txt
  20. Del %Temp%\SRF0.Txt & Exit
  21. --------------------------------------------------------------------------------------
  22. [0804_list]
  23. 1=美式键盘|{00000000-0000-0000-0000-000000000000}|0804|{34745C63-B2F0-4784-8B67-5E12C8701A31}|{00000000-0000-0000-0000-000000000000}|04090804|
  24. 2=中文 - QQ拼音输入法|{AE51F1C0-807F-4A64-AC55-F2ADF92E2603}|0804|{34745C63-B2F0-4784-8B67-5E12C8701A31}|{96EC4774-55A1-498B-827F-E95D5445B6C1}|00000000|
  25. [0804_disabled]
  26. 1=微软五笔|{6A498709-E00B-4C45-A018-8F9E4081AE40}|0804|{34745C63-B2F0-4784-8B67-5E12C8701A31}|{82590C13-F4DD-44F4-BA1D-8667246FDF8E}|00000000
  27. 2=微软拼音|{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}|0804|{34745C63-B2F0-4784-8B67-5E12C8701A31}|{FA550B04-5AD7-411F-A5AC-CA038EC515D7}|00000000
  28. 3=搜狗拼音输入法|{E7EA138E-69F8-11D7-A6EA-00065B844310}|0804|{34745C63-B2F0-4784-8B67-5E12C8701A31}|{E7EA138F-69F8-11D7-A6EA-00065B844311}|00000000
  29. 4=卡饭输入法|{26B544D2-A6D1-4351-A1D2-1F37B89FDA03}|0804|{34745C63-B2F0-4784-8B67-5E12C8701A31}|{B712AFE6-6318-4F57-B3F5-76E63C3F5BD0}|00000000
  30. [0804_switchkey]
  31. layout=Ctrl+Shift
  32. language=disable
  33. CAPS=Caps Lock
  34. Ime/NonIme Toggle=Ctrl+SPACE
  35. Symbol Toggle=Shift+SPACE
  36. Shape Toggle=Ctrl+.
  37. [0804_other]
  38. SwitchMode=0
  39. LanguageBar=1
  40. InputEmoji=1
  41. DefaultIME=1
  42. ---------------------------------------------------------------------------------------
复制代码
鄙人有一U盘,里面放有一些自己常用的工具和一些自己常用的脚本和素材。
去网吧和朋友开黑的时候用的,
网吧里诸多的输入法和设置,我很不爽。一点也不符合自己的使用习惯,
于是编写了一个借助 TSFTool 输入法设置工具,自动设置输入法 和 剔除其他输入法 的脚本。
U盘里有QQ拼音的安装包,脚本自动安装,安装包 加参数  /silent 可以实现静默安装。
  1. Start "" %~dp0\.TOOL\QQ拼音输入法\QQPinyin_Setup_6.6.6304.400.exe /silent
复制代码
安装完后,间隔点时间,再调用该脚本设置输入法,
因为TSFTool 输入法设置工具,的配置文件是“ 带有BOM UTF8编码本文配置文档”
原本配置文档直接导出后存在U盘里,直接导入就OK了。
开始我经常跑的网吧有好几个,每次使用U盘的盘符都不一样,
搞得我无奈了,只好借助脚本 %~dp0 来定位文件。
原本配置文档也可以 直接调用的,
可是鄙人有点轻微的强迫症。不喜欢U盘里有太多配置文档,
所有需要调用的,网址,配置文档,注册表,快捷方式,,都集成在脚本里,
如果要转移U盘的时候,直接带走脚本就OK了,,,,,
这也是我多年来编写自己“工具箱脚本”的习惯之一,,,
于是乎,,,,,,,,,,,,,便有了这个帖子!
OK!,,,回归话题脚本,,,
---------脚本解析--------------------
  1. Set "开始行关键字=[0804_list]"
复制代码
也就是开始读取配置内容的首行,,,,,,,,
  1. Set 结束行=23
复制代码
也就是配置文档所占的行数,,,,,,,
  1. Echo.//4=>%Temp%\UTF-16LE.Txt&Certutil -Decode -f %Temp%\UTF-16LE.Txt %Temp%\UTF-16LE.Txt>Nul
  2. Echo.77u/>%Temp%\UTF8-BOM.Txt&Certutil -Decode -f %Temp%\UTF8-BOM.Txt %Temp%\SRF.Txt>Nul
复制代码
创建 UTF-16LE 和 带有BOM UTF8编码 本文文档,
:Srf循环
(*)读取脚本内的内容输出到 ANSI.Txt 本文(脚本是 ANSI 编码,输出的自然也是 ANSI 本文)
:Srf结束
  1. Cmd /d /u /c Type %Temp%\ANSI.Txt>%Temp%\ANSI-CR.Txt
复制代码
把 Windows(CRLF) ANSI 编码本文 转换成 macintosh(CR) ANSI 编码本文。
  1. Type %Temp%\ANSI-CR.Txt>>%Temp%\UTF-16LE.Txt
复制代码
把 macintosh(CR) ANSI 编码本文 写入 UTF8-16LE 本文文档,
  1. Type %Temp%\UTF-16LE.Txt>>%Temp%\SRF.Txt
复制代码
再把 UTF8-16LE 本文文档 写入 带有BOM UTF8编码 本文文档。
----写到这,有点基础的新手基本也看出来了-------------
没错,这就是本文编码转换过程,,
一般的转换程序,不支持 带有 BOM UTF8编码 的文档。
脚本是通过创建 特定本文 ,然后再写入、。
从以上的范本可以看出,我这脚本这样写法,可以忽略配置文档里的特殊字符 如: |  < > %
也可以把配置内容扔到脚本任意位置,只要适配 开始行关键字 就可以了,
  1. Set "开始行关键字=[0804_list]"
复制代码
---------脚本解析完----------------
脚本分享出来给大家,相互 学习,借鉴,讨论。,,,,大神们口下留情。
代码是我从自己的“U盘工具箱”批处理里扣出来的。有些不必要的标签,,,自行谅解。

utf8 bom头配合chcp65001或无bom文本就行 ,utf8 bom头可参考
http://www.bathome.net/redirect. ... 3689&pid=273852
http://www.bathome.net/redirect. ... 7322&pid=273841
顺便再来一个 ,编码保存为ansi
  1. @echo off
  2. chcp 1252
  3. set str=帮豢
  4. set /p=%str:~1%<nul >utf8bom.txt
  5. chcp 936
  6. echo dddddddddddddd >>utf8bom.txt
  7. pause
复制代码

TOP

返回列表