返回列表 发帖

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

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

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

TOP

返回列表