我有一个批处理文件,它接收路径作为第一个参数。路径始终由特殊字符组成,例如^
,é
或è
。
此呼叫与此类似
D:\Script>MyBatch My\path\test_00170_LASTNAME^Firstname\image
始终存在此错误:未知指定路径
当我回复我的bash中的第一个参数时,我可以看到(注意缺少的^
)
My\path\test_00170_LASTNAMEFirstname\image
所以我试图通过在
之前添加另一个^
来逃避这个角色
My\path\test_00170_LASTNAME^^Firstname\image
但是当我回应这个时,我也有同样的结果......
My\path\test_00170_LASTNAMEFirstname\image
我还尝试将^
放在引号之间,但这不起作用
答案 0 :(得分:1)
您需要在命令行中转义插入标记或更好地将路径放入引号。
在这两种情况下,您都应该使用延迟扩展,因为在扩展内容时不会修改内容。
myBatch "C:\LASTNAME^Firstname\image"
或
myBatch C:\LASTNAME^^Firstname\image
在你的批处理中使用像这样的东西
@echo off
set "arg1=%~1"
setlocal EnableDelayedExpansion
echo !arg1!
答案 1 :(得分:0)
你需要将它转义两次 - 一次输入路径作为批处理脚本的参数时,再次回显它时:
<强> caret_input.bat 强>:
echo %1
双重转义(注意批处理文件开始输出时它是如何转义的):
C:\>caret_input.bat my\path^^^^is\special
C:\>echo my\path^is\special
my\path^is\special
如果您要在批处理文件中使用带有特殊字符的字符串,那么只转换一次的方法就可以了:
<强> caret_escape.bat 强>:
echo my\path^^is\special
和输出
C:\>echo my\path^is\special
my\path^is\special