[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
目测问题是 findstr 是 ANSI
所以 type 1.txt | findstr "abc"
这样行不行

QQ 20147578

TOP

本帖最后由 czjt1234 于 2024-1-17 21:11 编辑

或者再弄个utf8转ansi的批处理或vbs或ps
在你的每个批处理的开头调用一下
比如把下面的vbs保存为 d:\UTF8toANSI.vbs
然后在你的批处理开头加上
start /w WScript.exe d:\UTF8toANSI.vbs "xxx.ini"
支持命令行参数,比如 start /w WScript.exe d:\UTF8toANSI.vbs "%%i"
  1. Dim oStream, file, s
  2. file = wsh.Arguments(0)
  3. If checkUTF8(file) = False Then wsh.Quit()
  4. Set oStream = CreateObject("ADODB.Stream")
  5. oStream.Type = 2    'adTypeText
  6. oStream.Mode = 3    'adModeReadWrite
  7. oStream.Charset = "UTF-8"
  8. oStream.Open()
  9. oStream.LoadFromFile file
  10. s = oStream.ReadText()
  11. oStream.Close()
  12. oStream.Charset = "GB2312"
  13. oStream.Open()
  14. oStream.WriteText s
  15. oStream.SaveToFile file, 2    'adSaveCreateOverWrite
  16. oStream.Close()
  17. Function checkUTF8(ByVal file)
  18.     Dim oStream, oRegExp, arr(), s
  19.     Set oStream = CreateObject("ADODB.Stream")
  20.     oStream.Type = 1    'adTypeBinary
  21.     oStream.Mode = 3    'adModeReadWrite
  22.     oStream.Open()
  23.     oStream.LoadFromFile file
  24.     If oStream.Size = 0 Then
  25.         checkUTF8 = True
  26.         Exit Function
  27.     End If
  28.     ReDim arr(oStream.Size - 1)
  29.     For s = 0 To oStream.Size - 1
  30.         arr(s) = ChrW(AscB(oStream.Read(1)))
  31.     Next
  32.     oStream.Close()
  33.     s = "[\xC0-\xDF]([^\x80-\xBF]|$)"        & _
  34.         "|[\xE0-\xEF].{0,1}([^\x80-\xBF]|$)" & _
  35.         "|[\xF0-\xF7].{0,2}([^\x80-\xBF]|$)" & _
  36.         "|[\xF8-\xFB].{0,3}([^\x80-\xBF]|$)" & _
  37.         "|[\xFC-\xFD].{0,4}([^\x80-\xBF]|$)" & _
  38.         "|[\xFE-\xFE].{0,5}([^\x80-\xBF]|$)" & _
  39.         "|[\x00-\x7F][\x80-\xBF]"            & _
  40.         "|[\xC0-\xDF].[\x80-\xBF]"           & _
  41.         "|[\xE0-\xEF]..[\x80-\xBF]"          & _
  42.         "|[\xF0-\xF7]...[\x80-\xBF]"         & _
  43.         "|[\xF8-\xFB]....[\x80-\xBF]"        & _
  44.         "|[\xFC-\xFD].....[\x80-\xBF]"       & _
  45.         "|[\xFE-\xFE]......[\x80-\xBF]"      & _
  46.         "|^[\x80-\xBF]"
  47.     Set oRegExp = New RegExp
  48.     oRegExp.MultiLine = False
  49.     oRegExp.Pattern = s
  50.     checkUTF8 = Not oRegExp.Test(Join(arr, ""))
  51. End Function
复制代码

QQ 20147578

TOP

返回列表