我需要一个 DOS .bat 脚本,将所有参数传输到 .exe 程序。
例如调用.exe program.exe的DOS脚本main.bat:
program.exe ????
问题是 ??? 应该是什么。所有参数必须用引号传递:如果文件名中有空格,则必须保留空格。在 UNIX/POSIX 下,这称为“带引号的数组”,因为参数形成一个数组 (ARGV[x]),并且每个参数都必须用引号括起来。
答案1
您可以简单地使用 %* 将传递到 .bat 文件的所有内容传递给其他任何内容。
请注意,如果您将“带空格的单词”传递给批处理文件,它将被视为引号中的 1 个参数并以此形式传递。如果您省略“”,批处理仍会将其转发给程序,但程序会将其视为单独的参数。这实际上取决于批处理文件的调用方式,以了解这些引号是否存在以及是否需要。例如,如果您将资源管理器中的文件拖放到批处理文件中,资源管理器将为您添加引号。如果您从命令提示符手动输入,则由用户检查引号。
所以:
program.exe %0
对于你的情况来说应该足够了。
此外,在命令行中,如果您使用制表符自动完成文件名,则如果需要,引号会自动添加,尽管引号可能让您觉得必须将其编辑掉才能继续输入,但实际上您不必这样做。命令提示符足够智能。
例如:在这里我输入 prog,按两次 tab,然后继续输入并再次按一次 tab。
C:\>_
C:\>cd prog_ (tab)
C:\>cd "Program Files"_ (tab)
C:\>cd "Program Files (x86)"_
C:\>cd "Program Files (x86)"\Micro_ (tab)
C:\>cd "Program Files (x86)\Microsoft Office"_ (enter)
C:\Program Files (x86)\Microsoft Office>_