标题: [文本处理] 批处理Echo中文写入文件后出现乱码 [打印本页]
作者: ibm 时间: 2008-9-29 20:01 标题: 批处理Echo中文写入文件后出现乱码
在批文件中,
echo ;若干中文字>>test.reg
之后,在test.reg中会出现下面乱码
※쟊틓ﲼ퀢뷂⊨쮲ꖵ뿄⸠䥚⁐췐쒵ꋗ에ꋏ겣즿횻뒸껖쏓ഠ
现在把包含echo的整段代码发来,大家帮忙看看。
问题补充:
1.写个短的echo ;若干中文字>>test.reg,结果是正常的,
2.我的系统是Vista Ultimate-
-
- SET "BAT2MNPA=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%"
- IF NOT EXIST BACKUP\%Userdomain% MKDIR BACKUP\%Userdomain%
- @REM 右键→新建→项目--功能的取消
- @ECHO OFF
- ECHO.
- IF /I "%BAT2MENU%"=="All" (
- SET "NullFile=Z"
- GOTO ChJuNullFile )
- ECHO 右键→新建→项目--功能的取消
- ECHO.
- ECHO 请输入扩展名,多个名称请用空格分开
- ECHO.
- SET NullFile=
- SET /P NullFile=[回车]:跳过,[Z]:推荐值。请输入:
- IF /I "%NullFile%"=="" GOTO END2MENUN
- SET "NullFile=%NullFile:.=%"
- SET "NullFile=%NullFile: = %"
- :ChJuNullFile
- IF /I "%NullFile%"=="Z" SET "NullFile=accdb AIS bmp contact docx jnt pptx psd pub wav xlsx ZIP"
- FOR %%I IN ( %NullFile% ) DO (
- REG QUERY HKCR\.%%I\ShellNew 2>nul 1>nul
- IF NOT errorlevel 1 (
- REG EXPORT HKCR\.%%I\ShellNew BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg
- ECHO ; 这是鼠标右键"新建"菜单项目 .%%I 类型的注册表信息,可作恢复之用 >> BACKUP\%Userdomain%\%%I-%BAT2MNPA%.reg
- REG DELETE HKCR\.%%I\ShellNew /F
- ) ELSE (
- IF /I "%%I"=="accdb" (
- 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
- ) ELSE (
- IF /I %%I==docx (
- 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
- ) ELSE (
- IF /I %%I==jnt (
- 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
- ) ELSE (
- IF /I %%I==pptx (
- 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
- ) ELSE (
- IF /I %%I==pub (
- 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
- ) ELSE (
- IF /I %%I==xlsx (
- 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
- ) ELSE (
- SET /A A+=1
- ECHO.
- ECHO !A!个错误:可能的原因:1.右键中无此项“ .%%I ”;
- ECHO 2.输入有误; 3.无法删除。
- ECHO.
- )
- )
- )
- )
- )
- )
- )
- )
- GOTO END2MENUN
- :ERRORNullFile
- ECHO.
- ECHO.
- COLOR 0C
- ECHO 错误,请重新输入:
- ECHO.
- PAUSE
- ECHO.
- COLOR 1F
- GOTO ChNullFile
- :ENullFile
- :END2MENUN
- ECHO.
- ECHO.
- ECHO 操作成功完成……
- PAUSE 1>NUL
- CLS
复制代码
作者: qq641255849 时间: 2008-9-29 20:05
我的测试没问题啊...
试试
>>XXX.reg echo XXX
作者: ibm 时间: 2008-9-29 20:12
得知你测试通过了,我便知道问题出在我的系统,谢谢你的回复。
[ 本帖最后由 ibm 于 2008-9-29 20:30 编辑 ]
作者: zqz0012005 时间: 2008-9-29 20:18
注册表导出文件为Unicode格式,CMD默认输出为ANSI,格式不兼容,所以出现乱码
要使CMD输出为Unicode,运行cmd /u
作者: ibm 时间: 2008-9-29 20:29
版主就是版主,
多谢!
问题虽然找到了,但是我在批处理中加入 cmd /u 之后,批处理文件拒绝顺序执行下面的代码,如何解决?
[ 本帖最后由 ibm 于 2008-9-29 20:46 编辑 ]
作者: ibm 时间: 2008-9-30 11:03 标题: 解决!
type a.reg > a.txt
del /q a.ret
echo ......>>a.txt
ren a.txt a.reg
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |