如何在命令行上将文件内容作为参数传递?
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! 提醒如果您需要 运行 从 %
到 %%
批处理文件。
假设我想 运行
>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! 提醒如果您需要 运行 从 %
到 %%
批处理文件。