以@ 开头的 Windows 快捷方式目标参数

Mar*_*son 12 windows shortcut

我有一个 Windows 应用程序,我需要使用桌面快捷方式和一些命令行参数调用它。

我已经这样做了数千次,但这一次有点不同。而不是使用像-e 12345or-example 12345这样的普通命令行参数,而是使用@12345(以@符号开头)。

Windows 快捷方式不喜欢此参数紧跟在可执行文件名称之后,它只会删除所有内容。我不知道为什么。

例如:

c:\example\example.exe @12345 -e9876作为“目标”,保存时去掉所有参数,留下c:\example\example.exe作为目标。

c:\example\example.exe -e9876 @12345工作得很好。它保存并验证,一切都很好。

但是我需要@参数是命令中的第一个。除了将命令包装在批处理文件中并调用批处理之外,如何让@符号成为 Windows 快捷方式上的第一个命令行参数?

The*_*Wiz 13

谁知道?... Windows 显然将@字符视为分隔符。Windows 命令只会解释命令中的第一个元素......因此它有效地截断了其余部分。显然,您可以通过^在它之前提供 a 来覆盖该行为来转义符号。

IE

c:\example\example.exe ^@12345 -e9876

  • @MarkHenderson 插入符号“^”是当时整个 WIN32(以及后来的 64 位)API 使用的标准“转义下一个字符”符号,因为(如果我没记错的话)至少是 NT 3.5(是的:我变老了)。它几乎适用于 Windows 中可以提供命令行的任何地方:CMD-scripts/prompt、WIndows+R 运行框、快捷方式,在与服务和计划任务关联的命令行中,仅举个例子很少。 (4认同)
  • 嘿!有用!出于好奇,您究竟是如何找到答案的? (3认同)
  • 昔日的深沉黑暗帖子。有些人参考了不再存在的文件(或者至少不容易找到)并提到了其中的一些花絮。他还提到了诸如 `$` 和 `%` 字符等可能导致其他问题的东西。您可以使用相同的 `^` 字符转义那些。你也可以像你想象的那样通过做`^^`来逃脱。 (3认同)