Board logo

标题: [文本处理] 批处理如何实现文本编码转换? [打印本页]

作者: tan1967    时间: 2013-5-8 21:28     标题: 批处理如何实现文本编码转换?

文本内容转GB2312


我来了     %ce%d2%c0%b4%c1%cb


一条一行。10万行不卡代码


作者: tmplinshi    时间: 2013-5-8 22:40

本帖最后由 tmplinshi 于 2013-5-8 22:42 编辑

urlencode v1.01 (2013-5-8) (http://bathome.net/viewthread.php?tid=24065)
  1. urlencode -m -gbk < in.txt > out.txt
复制代码

作者: tan1967    时间: 2013-5-9 22:51

2楼的那个不会用给个方便拖动代码
作者: wankoilz    时间: 2013-5-12 11:21

本帖最后由 wankoilz 于 2013-5-12 11:27 编辑

试试vbs吧,十万行还真不知道会等多久,你试试再回复。
假设你文本中的换行符是vbCrLf。只支持拖拽一个文件。
测试环境:Win7
  1. Set fso=CreateObject("scripting.filesystemobject")
  2. content=fso.OpenTextFile(WScript.Arguments(0)).ReadAll()
  3. content=Replace(content,"%","")
  4. content=Replace(content,vbCrLf,"0d0a")
  5. Set xmldom=CreateObject("microsoft.xmldom")
  6. Set node=xmldom.createElement("bin-hex")
  7. node.datatype="bin.hex"
  8. node.text=content
  9. Set ado=CreateObject("adodb.stream")
  10. ado.Type=1
  11. ado.Mode=3
  12. ado.Open
  13. ado.Write node.nodeTypedValue
  14. path=GetPath(WScript.Arguments(0))
  15. filename=GetFileName(WScript.Arguments(0))
  16. If fso.FileExists(path&filename) Then fso.DeleteFile path&filename
  17. ado.SaveToFile path&filename
  18. Msgbox "over!"
  19. Function GetFileName(str)
  20.     arr=Split(str,"\")
  21.     GetFileName="GBK_"&arr(UBound(arr))
  22. End Function
  23. Function GetPath(str)
  24.     arr=Split(str,"\")
  25.     For i=0 To UBound(arr)-1
  26.         GetPath=GetPath&arr(i)&"\"
  27.     Next
  28. End Function
复制代码

作者: BAT-VBS    时间: 2013-5-12 20:07

回复 3# tan1967


下载一个urlencode.exe放在C:\
把你的10万行文本放在C:\in.txt
开始
运行
cmd
cd /d C:\
运行他的那句代码
作者: tmplinshi    时间: 2013-5-13 07:42

本帖最后由 tmplinshi 于 2013-5-13 07:43 编辑

回复 3# tan1967


需要下载 urlencode (http://bathome.net/viewthread.php?tid=24065)
  1. @echo off
  2. setlocal
  3. if "%~1" == "" (call :input) else (set args=%*)
  4. for %%a in (%args%) do (
  5.     echo "%%~nxa" --^> "%%~nxa.urlencode.txt"
  6.     urlencode -m -gbk < %%a > "%%~a.urlencode.txt"
  7. )
  8. echo 完毕!按任意键退出...
  9. pause >nul
  10. exit /b
  11. :input
  12. cls
  13. set args=
  14. echo 请拖入文本到这里(多个文件用空格分隔)
  15. echo (使用方法2: 也可以直接拖放到批处理图标上)
  16. echo,
  17. set /p args=^>
  18. if defined args (goto :eof) else (goto input)
复制代码





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