命令需要使用如下所示的序列:Z;[%&.:mn=WO
。 以下通话有效:
D:\Some_folder> some_command -s "Z;[%&.:mn=WO"
目标是将此调用嵌入到批处理文件中,该批处理文件的行为不像交互式模式。
如您所见,有几个特殊字符,因此在使用前必须加以保护。批处理文件类似于以下示例:
set SEQUENCE=<sequence>
call %SOMEREP%\command -s %SEQUENCE% REM blah blah blah
使用 set SEQUENCE="Z;[%&.:mn=WO"
将会失败,令人惊讶的是,对于echo on
,执行之前显示的行完全相同 strong>作为处于交互模式的一种,可以使用。实际上,命令行抱怨该序列应仅包含33-256范围内的ASCII字符,并且长度恰好为12个字符。引号也成为价值的一部分。
尝试保护每个字符失败,无论是否带引号:
-
使用
set SEQUENCE=Z^;[^^%%^&.:mn^=WO
,该行将为:D:\Some_folder> some_command -s Z;[% & .:mn=WO
它产生错误“系统找不到驱动器”(
.:
之类的声音被解释为驱动器切换) -
使用
set SEQUENCE="Z^;[^^%%^&.:mn^=WO"
,该行将为:D:\Some_folder> some_command -s "Z^;[^^%^&.:mn^=WO"
它抱怨序列大小以及第一次尝试
尝试了其他字符转义尝试,但均未成功,例如用引号引起来的字符串(""
中的引号转义)。这里错过了什么?在用Bash重写之前询问。
更新:我今天早上注意到,复制的尝试显示双尖号(^^
)。我不记得为什么这么做了。我让它就位。