无忧启动论坛

标题: 【已解决】如何解决批处理中文变问号问题 [打印本页]

作者: 青青草    时间: 2022-2-17 12:39
标题: 【已解决】如何解决批处理中文变问号问题
本帖最后由 青青草 于 2022-2-17 14:51 编辑

今天有空,试着对mas 1.5进行汉化,开头很顺利,显示中文正常。
当汉化到
  1. echo.              [1] 激活 - Windows
  2. echo.              [2] Activate - Office
  3. echo.              [3] Activate - All
复制代码
时,运行批处理,中文字 “激活”变成了问号。
这是什么原因造成的呢?请大神们赐教!谢谢!

感谢 hua_wuxin 大神!

不好意思,发错位置了,应该发到脚本讨论区才对。烦请版主移贴。谢谢!

MAS_1.5.cmd.7z

1.19 MB, 下载次数: 57, 下载积分: 无忧币 -2


作者: 窄口牛    时间: 2022-2-17 12:44
改成ansi就好了。
作者: 2010techon    时间: 2022-2-17 12:44
压缩包有密码?,请把批处理文件完整上传
作者: 青青草    时间: 2022-2-17 12:46
2010techon 发表于 2022-2-17 12:44
压缩包有密码?,请把批处理文件完整上传

密码:1234
作者: 青青草    时间: 2022-2-17 12:48
2010techon 发表于 2022-2-17 12:44
压缩包有密码?,请把批处理文件完整上传

已上传。
谢谢!
作者: 青青草    时间: 2022-2-17 12:48
窄口牛 发表于 2022-2-17 12:44
改成ansi就好了。

应该不是这原因。
作者: 2010techon    时间: 2022-2-17 13:15
一万多行的批处理,看着让人头大,中文问号一般是编码问题或者命令行模式的事
作者: 青青草    时间: 2022-2-17 13:23
2010techon 发表于 2022-2-17 13:15
一万多行的批处理,看着让人头大,中文问号一般是编码问题或者命令行模式的事

就"在线kms激活“部分的内容汉化出问题。你可直接关注"在线kms激活“部分。
作者: nclnum1    时间: 2022-2-17 13:27
路过
作者: laozhao    时间: 2022-2-17 13:31
mode con 语句去掉试试
作者: 青青草    时间: 2022-2-17 13:38
laozhao 发表于 2022-2-17 13:31
mode con 语句去掉试试

与 mode con 无关。
作者: sunsea    时间: 2022-2-17 13:40
明确在显示信息之前加入chcp 936然后用记事本 ANSI保存?
作者: 青青草    时间: 2022-2-17 13:45
sunsea 发表于 2022-2-17 13:40
明确在显示信息之前加入chcp 936然后用记事本 ANSI保存?

试过,没有效果。
作者: 青青草    时间: 2022-2-17 13:46
青青草 发表于 2022-2-17 13:45
试过,没有效果。

ANSI保存的
作者: hu.man    时间: 2022-2-17 14:07
本帖最后由 hu.man 于 2022-2-17 14:16 编辑

路過看看

作者: hua_wuxin    时间: 2022-2-17 14:12
把616行由
%nul% %_psc% "$f=[io.file]::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; [io.file]::WriteAllText('%~2',$f[1].Trim(),[System.Text.Encoding]::%~3);"

改为
%nul% %_psc% "$f=[io.file]::ReadAllText('!_batp!',[System.Text.Encoding]::Default) -split \":%~1\:.*`r`n\"; [io.file]::WriteAllText('%~2',$f[1].Trim(),[System.Text.Encoding]::Default);"
621行可能也要改。

作者: 青青草    时间: 2022-2-17 14:16
hua_wuxin 发表于 2022-2-17 14:12
把616行由
%nul% %_psc% "$f=::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; ::WriteAllText('%~2',$ ...

我试试
作者: 青青草    时间: 2022-2-17 14:48
hua_wuxin 发表于 2022-2-17 14:12
把616行由
%nul% %_psc% "$f=::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; ::WriteAllText('%~2',$ ...

解决了!
谢谢!
作者: 2010techon    时间: 2022-2-17 14:56
本帖最后由 2010techon 于 2022-2-17 15:00 编辑
青青草 发表于 2022-2-17 13:23
就"在线kms激活“部分的内容汉化出问题。你可直接关注"在线kms激活“部分。
-----发完才看到已解决,删了吧
:MainMenu 主界面:
  1. :MainMenu

  2. cls
  3. color 07
  4. title  Microsoft Activation Scripts AIO 1.5
  5. mode 76, 30
  6. if exist "%mastemp%\.*" rmdir /s /q "%mastemp%" %nul%

  7. echo:
  8. echo:
  9. echo:
  10. echo:
  11. echo:       ______________________________________________________________
  12. echo:
  13. echo:                 Activation Methods:
  14. echo:
  15. echo:             [1] HWID        ^|  Permanent  ^|  Win 10-11
  16. echo:             [2] KMS38       ^|  Till 2038  ^|  Win 10-11-Server
  17. echo:             [3] Online KMS  ^|  180 Days   ^|  Win / Office      
  18. echo:             __________________________________________________      
  19. echo:                                                                     
  20. echo:             [4] Check Activation Status [vbs]
  21. echo:             [5] Check Activation Status [wmi]
  22. echo:             [6] Extras                                               
  23. echo:             __________________________________________________      
  24. echo:                                                                     
  25. echo:             [7] Read Me
  26. echo:             [8] Exit                                
  27. echo:       ______________________________________________________________
  28. echo:
  29. call :_color2 %_White% "         " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6,7,8] :"
  30. choice /C:12345678 /N
  31. set _erl=%errorlevel%

  32. if %_erl%==8 exit /b
  33. if %_erl%==7 start https://windowsaddict.ml & goto :MainMenu
  34. if %_erl%==6 goto:Extras
  35. if %_erl%==5 setlocal & call :_Check_Status_wmi_ext & cls & endlocal & goto :MainMenu
  36. if %_erl%==4 setlocal & call :_Check_Status_vbs & cls & endlocal & goto :MainMenu
  37. if %_erl%==3 setlocal & call :KMSActivation     & cls & endlocal & goto :MainMenu
复制代码
是[3]号选项吧? 执行 call :KMSActivation
在 :KMSActivation 内有:
  1. call :_export kacttxt "%mastemp%\Activate.cmd" ASCII
  2. call "%mastemp%\Activate.cmd"
复制代码

:_export部分:
  1. ::  Extract the text from batch script without character issue

  2. :_Export

  3. %nul% %_psc% "$f=[io.file]::ReadAllText('!_batp!') -split ":%~1\:.*`r`n"; [io.file]::WriteAllText('%~2',$f[1].Trim(),[System.Text.Encoding]::%~3);"
  4. exit /b
复制代码

很可能是这里调用powershell 将编码转为ASCII的原因。。。


作者: 青青草    时间: 2022-2-17 18:11
2010techon 发表于 2022-2-17 14:56
-----发完才看到已解决,删了吧
:MainMenu 主界面:
是[3]号选项吧? 执行 call :KMSActivation

谢谢!




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3