我正在尝试将命令行参数传递给控制台应用程序(计算机语言编译器)。
我的问题:我传递的参数包含一个连字符字符,它会导致错误“ - 是意外的命令/字符”。
这是我正在使用的命令行参数(12d.exe是应用程序/编译器):
12d.exe "C:/Staff - Name/abc.4dm"
它似乎将' - '视为命令而不是目录/字符串的一部分。也许我可以使用批处理文件来执行此命令行并重新格式化目录路径?你知道在HTTP POST中我可以使用urlencode格式化post命令,也许我可以在批处理文件中对命令行进行编码。
答案 0 :(得分:4)
似乎12d.exe无法理解一些有效的文件名,对12d.exe感到羞耻。
您可能会采取一些措施,
尝试传递短文件名。它可能适用于连字符-
位于字符串右侧的某些情况。但不是在你的情况下,因为它可能会转换为STAFF-~1
或类似的东西。
call :invoke12d "Staff - Name\abc.4dm"
goto :eof
:invoke12d
12d %~s1
goto :eof
或创建一个联结,一个符号链接,用另一个不包含连字符的名称调用该目录。有关详细信息,请参阅此http://technet.microsoft.com/en-us/sysinternals/bb896768并下载一个简单的工具。
junction staffnam "Staff - Name"
12d.exe "staffnam/abc.4dm"
答案 1 :(得分:3)
您可以尝试添加^
来“转义”批处理批处理中的连字符忽略它。
12d.exe "C:/Staff ^- Name/abc.4dm"