[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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. ……
复制代码
我想把截图放上来,但是不知道为什么,总是提示我“附件文件无法保存”,所以只能手打几段错误信息。
事实上,我在英文的代码里也不能用中文注释,否则后面紧跟的代码根本运行不了。
虽然我可以用英文的脚本,但是实在不明白,为什么我不能用中文呢?恳请大家帮忙解答,谢谢!

回复 2# zz100001


    也不行,报错信息有细微的差异:
  1. 'ation").ShellExecute("cmd.exe","'不是内部或外部命令,也不是可运行的程序或批处理文件。
复制代码
变成了:
  1. 'ion").ShellExecute("cmd.exe","'不是内部或外部命令,也不是可运行的程序或批处理文件。
复制代码
剩下基本一样,我不知道这有没有关系

TOP

回复 4# zz100001


    没有哇,代码就像上面写的那样,只是echo后面显示的内容用了中文,换行的话英文版的应该运行不了吧
我倒是想把代码整个都传上来,但是传不了附件

TOP

回复 6# Batcher


    你好!我上传到百度网盘了,地址是
https://pan.baidu.com/s/1y9Rz31vhrpaNjMJAYR-tDg
密码是14ex

TOP

回复 9# cmd1152


    你好!我按照你说的方法把图片上传上来了,看看这个能不能用:



这个是删除了chcp后的错误信息:



我也上传了原本的脚本文件到百度云盘,地址是https://pan.baidu.com/s/186ct-tAieo3_3M0yt3DT9g
密码是g775

TOP

回复 13# cmd1152


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

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

回复 18# cmd1152


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

TOP

回复 20# newswan


    好的,文件放在了文件区

TOP

回复 24# newswan


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

TOP

回复 24# newswan


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

TOP

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



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

TOP

返回列表