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

[系统相关] [已解决]bat文件,相同的内容,echo后面的内容换成中文就报错

本帖最后由 in126 于 2021-8-23 22:17 编辑

因为工作需要,我最近在写一个切换静态IP和自动获取IP的脚本,在网上四处寻找到了英文版本,为了方便同事使用,就把echo后面的提示都改写成了中文,如下:
  1. @echo off  
  2. ::让cmd正常显示中文
  3. chcp 65001
  4. ::bat文件自动获取管理员权限
  5. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0"
  6. ::让用户选择静态IP或是自动获取IP
  7. echo Choose:
  8. echo [A] StaticIP
  9. echo [B] Automatic IP
  10. echo.
  11. :choice
  12. SET /P C=Choose between[A,B]:
  13. if "%C%"=="A" goto A
  14. if "%C%"=="B" goto B
  15. goto choice
复制代码
后面的内容暂且不赘述,因为可以运行,我把上面的代码改成了这样:
  1. @echo off  
  2. ::让cmd正常显示中文
  3. chcp 65001
  4. ::bat文件自动获取管理员权限
  5. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0"
  6. ::让用户选择静态IP或是自动获取IP
  7. echo 请选择:
  8. echo [A]内网配置
  9. echo [B]外网配置
  10. echo.
  11. :choice
  12. SET /P C=[A,B]?
  13. if "%C%"=="A" goto A
  14. if "%C%"=="B" goto B
  15. goto choice
复制代码
然后cmd就会报这么一堆错误,跳过了大部分代码:
  1. 'ation").ShellExecute("cmd.exe","'不是内部或外部命令,也不是可运行的程序或批处理文件。
  2. '配置'不是内部或外部命令,也不是可运行的程序或批处理文件。
  3. ……
复制代码
我想把截图放上来,但是不知道为什么,总是提示我“附件文件无法保存”,所以只能手打几段错误信息。
事实上,我在英文的代码里也不能用中文注释,否则后面紧跟的代码根本运行不了。
虽然我可以用英文的脚本,但是实在不明白,为什么我不能用中文呢?恳请大家帮忙解答,谢谢!

变量延迟 + 中文字符 + unix 换行
就会出问题,不知道什么原理
newswan 发表于 2021-8-23 23:55



    好的,今后我写脚本的时候一定会注意,谢谢你的帮助!

TOP

变量延迟 + 中文字符 + unix 换行
就会出问题,不知道什么原理

TOP

回复 24# newswan


    能不吝赐教一下为什么Unix换行符会对中文造成这样的问题而对英文无妨吗?

TOP

回复 24# newswan


    太神奇了,我找到了unix2dos.exe转换了一下,马上成功了!太谢谢了!果然来这里是找对地方了!

TOP

文件 是 unix 换行,改成 windows 换行
ok
1

评分人数

    • in126: 十分感谢!技术 + 1

TOP

chcp 936 对应 ansi
chcp 65001 对应 utf8
1

评分人数

    • in126: 感谢科普技术 + 1

TOP

回复 20# newswan


    好的,文件放在了文件区

TOP

1 楼的运行没问题

TOP

回复 14# in126


今天百度云盘,下载不了
用这个吧
http://cmd1152.ys168.com/

TOP

回复 18# cmd1152


    嗯嗯,我能确保,看起来这个问题确实挺奇怪的

TOP

回复 17# in126


    编码或代码的宽容性问题,请确保你的编码是ANSI
梦依旧在,只是,心有余而力渐有不足
年年岁岁花相似,岁岁年年人不同

TOP

回复 16# cmd1152


    仍然有错误
  1. http://ys-i.ys168.com/618757377/217166438/jirg36n863K6671GQ730f/%E6%97%A7%E7%89%88%E6%8E%A7%E5%88%B6%E5%8F%B0cmd%E9%94%99%E8%AF%AF.jpg
复制代码

TOP

回复 15# in126


    使用旧版控制台
梦依旧在,只是,心有余而力渐有不足
年年岁岁花相似,岁岁年年人不同

TOP

回复 13# cmd1152


    你好!我把属性截图的链接贴上来吧:
  1. [img]http://ys-e.ys168.com/618757350/217166372/t534L74467HM73mdoj65d5/cmd%E5%B1%9E%E6%80%A7.jpg[/img]
复制代码

TOP

返回列表