如何在命令行上将文件内容作为参数传递?

How to pass the contents of a file as a parameter on the command line?

假设我想 运行

>foo bar

bar 会根据我在文件系统中的位置而变化。为了不必记住 bar 的正确值,我想做的是在各自的文件夹中保留一个文件 fizz,这样我就可以执行调用 [=18] 之类的操作=]

>foo fizz

这当然不是开箱即用的。 也没有

>foo < fizz

因为foo不需要输入,只是一个参数。我找到了 solution for Linux,但没有 Windows。

假设 fizz 包含没有空格的单行,单行

for /F %i in (fizz) do @foo %i

会做你想做的。如果您放入 fizz 的参数可能包含空格,请使用

 for /F "delims=" %i in (fizz) do @foo "%i"

将参数一并传递。如果将其放入批处理文件中,请加倍 % 个字符。

Anton 给出了您想要的答案,应标记为正确答案。然而,我可以补充说,(根据我之前的经验,尤其是 java 版本)也许 foo 可能有不同的版本,类似于 bar 的不同之处,这取决于你在文件系统中的位置运行 它来自。所以 fizz 将同时具有可执行文件和参数。即

路径 1 中 fizz 的内容:

foo bar

路径 2 中 fizz 的内容:

foo1 bar2

然后只调用文件的内容,而不指定命令(因为它已经存在于文件 fizz 中)。

for /f "delims=" %i in (fizz) do %i

此方法还可以 运行 存在于 fizz 的下一行中的更多命令,例如,如果 fizz 包含:

ping localhost
ping 127.0.0.1
nslookup hostname1

每个将 运行 与上面的 for 循环顺序。

PS! 提醒如果您需要 运行 从 %%%批处理文件。