[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理Echo中文写入文件后出现乱码

在批文件中,
echo ;若干中文字>>test.reg
之后,在test.reg中会出现下面乱码

※쟊틓ﲼ퀢뷂⊨쮲ꖵ뿄⸠䥚⁐췐쒵ꋗ에ꋏ겣즿횻뒸껖쏓ഠ


现在把包含echo的整段代码发来,大家帮忙看看。
问题补充:
1.写个短的echo ;若干中文字>>test.reg,结果是正常的,
2.我的系统是Vista Ultimate
  1. SET "BAT2MNPA=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%"
  2. IF NOT EXIST BACKUP\%Userdomain% MKDIR BACKUP\%Userdomain%
  3. @REM 右键→新建→项目--功能的取消
  4. @ECHO OFF
  5. ECHO.
  6. IF /I "%BAT2MENU%"=="All" (
  7. SET "NullFile=Z"
  8. GOTO ChJuNullFile )
  9. ECHO 右键→新建→项目--功能的取消
  10. ECHO.
  11. ECHO 请输入扩展名,多个名称请用空格分开
  12. ECHO.
  13. SET NullFile=
  14. SET /P NullFile=[回车]:跳过,[Z]:推荐值。请输入: 
  15. IF /I "%NullFile%"=="" GOTO END2MENUN
  16. SET "NullFile=%NullFile:.=%"
  17. SET "NullFile=%NullFile: = %"
  18. :ChJuNullFile
  19. IF /I "%NullFile%"=="Z" SET "NullFile=accdb AIS bmp contact docx jnt pptx psd pub wav xlsx ZIP"
  20. FOR %%I IN ( %NullFile% ) DO (
  21.   REG QUERY HKCR\.%%I\ShellNew 2>nul 1>nul
  22.   IF NOT errorlevel 1 (
  23.     REG EXPORT HKCR\.%%I\ShellNew BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg
  24.     ECHO ; 这是鼠标右键"新建"菜单项目 .%%I 类型的注册表信息,可作恢复之用 >> BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg
  25.     REG DELETE HKCR\.%%I\ShellNew /F
  26.     ) ELSE (
  27.       IF /I "%%I"=="accdb" (
  28.       REG EXPORT "HKCR\.accdb\Access.Application.12\ShellNew" BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg  2>nul 1>nul && ECHO ; 这是鼠标右键"新建"菜单项目 .%%I 类型的注册表信息,可作恢复之用 >> BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg && REG DELETE "HKCR\.accdb\Access.Application.12\ShellNew" /F
  29.         ) ELSE (
  30.           IF /I %%I==docx (
  31.           REG EXPORT "HKCR\.docx\Word.Document.12\ShellNew" BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg  2>nul 1>nul && ECHO ; 这是鼠标右键"新建"菜单项目 .%%I 类型的注册表信息,可作恢复之用 >> BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg && REG DELETE "HKCR\.docx\Word.Document.12\ShellNew" /F
  32.             ) ELSE (
  33.               IF /I %%I==jnt (
  34.               REG EXPORT "HKCR\.jnt\jntfile\ShellNew" BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg  2>nul 1>nul && ECHO ; 这是鼠标右键"新建"菜单项目 .%%I 类型的注册表信息,可作恢复之用 >> BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg && REG DELETE "HKCR\.jnt\jntfile\ShellNew" /F
  35.                 ) ELSE (
  36.                   IF /I %%I==pptx (
  37.                   REG EXPORT "HKCR\.pptx\PowerPoint.Show.12\ShellNew" BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg  2>nul 1>nul && ECHO ; 这是鼠标右键"新建"菜单项目 .%%I 类型的注册表信息,可作恢复之用 >> BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg && REG DELETE "HKCR\.pptx\PowerPoint.Show.12\ShellNew" /F
  38.                     ) ELSE (
  39.                       IF /I %%I==pub (
  40.                       REG EXPORT "HKCR\.pub\Publisher.Document.12\ShellNew" BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg  2>nul 1>nul && ECHO ; 这是鼠标右键"新建"菜单项目 .%%I 类型的注册表信息,可作恢复之用 >> BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg && REG DELETE "HKCR\.pub\Publisher.Document.12\ShellNew" /F
  41.                         ) ELSE (
  42.                           IF /I %%I==xlsx (
  43.                           REG EXPORT "HKCR\.xlsx\Excel.Sheet.12\ShellNew" BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg  2>nul 1>nul && ECHO ; 这是鼠标右键"新建"菜单项目 .%%I 类型的注册表信息,可作恢复之用 >> BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg && REG DELETE "HKCR\.xlsx\Excel.Sheet.12\ShellNew" /F
  44.                             ) ELSE (
  45.                                SET /A A+=1
  46.                                ECHO.
  47.                                ECHO !A!个错误:可能的原因:1.右键中无此项“ .%%I ”;
  48.                                ECHO            2.输入有误; 3.无法删除。
  49.                                ECHO.
  50.                                 )
  51.                             )
  52.                         )
  53.                     )
  54.                 )
  55.             )
  56.         )
  57.     )
  58. GOTO END2MENUN
  59. :ERRORNullFile
  60. ECHO.
  61. ECHO.
  62. COLOR 0C
  63. ECHO 错误,请重新输入:
  64. ECHO.
  65. PAUSE
  66. ECHO.
  67. COLOR 1F
  68. GOTO ChNullFile
  69. :ENullFile
  70. :END2MENUN
  71. ECHO.
  72. ECHO.
  73. ECHO 操作成功完成……
  74. PAUSE 1>NUL
  75. CLS
复制代码

我的测试没问题啊...
试试
>>XXX.reg echo XXX

TOP

得知你测试通过了,我便知道问题出在我的系统,谢谢你的回复。

[ 本帖最后由 ibm 于 2008-9-29 20:30 编辑 ]

TOP

注册表导出文件为Unicode格式,CMD默认输出为ANSI,格式不兼容,所以出现乱码

要使CMD输出为Unicode,运行cmd /u
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

版主就是版主,
多谢!

问题虽然找到了,但是我在批处理中加入 cmd /u 之后,批处理文件拒绝顺序执行下面的代码,如何解决?

[ 本帖最后由 ibm 于 2008-9-29 20:46 编辑 ]

TOP

解决!

type a.reg > a.txt
del /q a.ret
echo ......>>a.txt
ren a.txt a.reg

TOP

返回列表