我正在调试一个
Windows批处理命令文件.在路径或文件名中使用扩展(> 0x7f)字符时失败.问题似乎与将参数传递给从另一个CALLed的命令文件有关.
例如,此命令按预期工作:
xcopy "Pezuñero\1 - 001.wav" \temp
这不是:
call another.cmd "Pezuñero"
“another.cmd”的内容:
xcopy "%~1\1 - 001.wav" \temp
%~1语法扩展参数并删除引号.这是必要的,因为在实际命令文件中,调用或被调用命令文件中的路径可能有空格.
第二个例子的结果(从CMD窗口复制)是这样的:
C:\>call another.cmd "Pezu±ero" C:\>xcopy "Pezu±ero\1 - 001.wav" \temp File not found - 1 - 001.wav 0 File(s) copied
请注意,“ñ”(0xF1)字符已更改为“±”(0xB1).
任何人都可以解释发生了什么,以及如何解决这个问题?
该脚本必须使用cmd.exe使用的相同编码编写.
在提示符下键入chcp,看看你得到了什么.然后使用支持该编码的编辑器打开该文件.对我来说,chcp输出代码页850,所以我在JEdit中编辑我的脚本,选择IBM850作为文件编码.我得到了相同的结果编辑文件在PSPad格式设置为OEM.
PS:我在我的机器上测试了你的步骤,我在notepad.exe中写的ñ字符(使用默认的ANSI编码)也从命令提示符读取时转换为±,所以看起来你的机器使用类似的ANSI和OEM编码.一定要尝试用¤替换ñ(用notepad.exe).从命令提示符运行时,这使得脚本正常工作(因为ANSI的字节值¤与OEM的相同).
原文地址:https://www.jb51.cc/windows/363269.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。