Board logo

标题: [文本处理] 请问CMD如何输出UTF-8编码的文件 [打印本页]

作者: terrancrm    时间: 2015-12-5 08:52     标题: 请问CMD如何输出UTF-8编码的文件

有一个CMD命令脚本,是输出手机电话本的VCF格式的,但默认是ANSI编码,请问如何让CMD输出默认是UTF-8编码。
(因为VCF生成后再手动将ANSI修改UTF-8就会破坏文件了,所以必须在CMD输入时就默认保存UTF-8编码)
请问有办法吗?谢谢。
-----------------------------------------------------------以下是CMD内容-----------------------------------------------------------
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. del temp.txt
  4. del veryhuo.vcf
  5. set /a line=1
  6. for /f "tokens=1,2,3,4 delims=," %%a in (veryhuo.csv) do (
  7. if !line! gtr 1 (
  8. (echo BEGIN:VCARD)       >> temp.txt
  9. (echo VERSION:3.0) >> temp.txt
  10. (echo N:;%%a;;;) >> temp.txt
  11. (echo FN:%%a) >> temp.txt
  12. (echo TEL;TYPE=X-qchat:%%b) >> temp.txt
  13. (echo END:VCARD) >> temp.txt
  14. )
  15. set /a line+=1
  16. )
  17. ren temp.txt veryhuo.vcf
复制代码
----------------------------------------------------------------------------------------------------------------------
作者: terse    时间: 2015-12-5 10:18

方便的话 用js +bat 直接处理
作者: 回家路上    时间: 2015-12-5 12:12

http://www.bathome.net/thread-31329-1-1.html
作者: CrLf    时间: 2015-12-5 22:14

本帖最后由 CrLf 于 2015-12-6 00:00 编辑
  1. mshta "http://bathome.net/s/hta/index.html?load=+sprintf" type('veryhuo.csv').split(/\r?\n/)._EACH(function(s){a=s.split(',');return sprintf('BEGIN:VCARD\r\nVERSION:3.0\r\nN:;%%s;;;\r\nFN:%%s\r\nTEL;TYPE=X-qchat:%%s\r\nEND:VCARD\r\n',a[0],a[0],a[1])}).slice(1).join('\r\n') >temp.txt
复制代码
其实原来有一个 csv 库的,但使用起来好像有点问题,不知道是不是 bug

受权限所制,在线 hta 不能使用 adodb.stream 写入文件,所以若要输出为 utf-8 需要这样写
  1. <!-- :
  2. @echo off
  3. mshta "%~f0" veryhuo.csv temp.txt
  4. pause&exit /b
  5. -->
  6. <script src=http://bathome.net/lib/diy/Libs.js></script>
  7. <script>
  8. Libs.append('hide')
  9. Libs.append('WSH')
  10. Libs.append('prototype')
  11. Libs.append('diyprototype')
  12. Libs.append('function')
  13. Libs.append('iconv')
  14. Libs.append('sprintf')
  15. </script>
  16. <script>
  17. var arr = type(WSH.Arguments(0)).split(/\r?\n/).slice(1)
  18. var str = arr._EACH(
  19. function(s){
  20. a=s.split(',')
  21. return sprintf('BEGIN:VCARD\r\nVERSION:3.0\r\nN:;%s;;;\r\nFN:%s\r\nTEL;TYPE=X-qchat:%s\r\nEND:VCARD\r\n',a[0],a[0],a[1])
  22. }
  23. ).join('\r\n')
  24. iconv.saveText(str,WSH.Arguments(1),'utf-8')
  25. </script>
复制代码

作者: CrLf    时间: 2015-12-6 00:01

本帖最后由 CrLf 于 2015-12-6 03:36 编辑

如果 csv 库能用的话,就方便多了
  1. mshta "http://bathome.net/s/hta/?load=+csv" new CSV(type('veryhuo.csv').replace(/^\s+/gm,''),{header:true})._EACH(function(o){return 'BEGIN:VCARD\r\nVERSION:3.0\r\nN:;'+o['姓名']+';;;\r\nFN:'+o['姓名']+'\r\nTEL;TYPE=X-qchat:'+o['电话']+'\r\nEND:VCARD\r\n'}).join('\r\n') >temp.txt
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2