加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

在Windows命令中处理扩展字符?

发布时间:2020-12-14 01:47:20 所属栏目:Windows 来源:网络整理
导读:我正在调试一个 Windows批处理命令文件.在路径或文件名中使用扩展( 0x7f)字符时失败.问题似乎与将参数传递给从另一个CALLed的命令文件有关. 例如,此命令按预期工作: xcopy "Pezu?ero1 - 001.wav" temp 这不是: call another.cmd "Pezu?ero" “another.cm
我正在调试一个 Windows批处理命令文件.在路径或文件名中使用扩展(> 0x7f)字符时失败.问题似乎与将参数传递给从另一个CALLed的命令文件有关.

例如,此命令按预期工作:

xcopy "Pezu?ero1 - 001.wav" temp

这不是:

call another.cmd "Pezu?ero"

“another.cmd”的内容:

xcopy "%~11 - 001.wav"    temp

%~1语法扩展参数并删除引号.这是必要的,因为在实际命令文件中,调用或被调用命令文件中的路径可能有空格.

第二个例子的结果(从CMD窗口复制)是这样的:

C:&;call another.cmd "Pezu±ero"    

C:&;xcopy "Pezu±ero1 - 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的相同).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读