将.BAT 文件的参数传递给执行的.EXE 文件

将.BAT 文件的参数传递给执行的.EXE 文件

我需要一个 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>_

相关内容