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

时间:2018-08-21 12:28:44

标签: windows batch-file command-line-arguments

假设我想跑步

>foo bar

但是bar的变化取决于我在文件系统中的位置。我想做的就是不必记住bar的正确值,就是将文件fizz保留在相应的文件夹中,这样我就可以进行呼叫

>foo fizz

这当然是开箱即用的。

>foo < fizz

因为foo不希望输入,只是一个参数。我找到了solution for Linux,但对于Windows却找不到。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

一次传递参数。如果将%字符放入批处理文件,则将其加倍。

答案 1 :(得分:1)

安东(Anton)准确给出了您想要的内容,应标记为正确答案。但是,我可以添加(根据我以前的经验,尤其是在Java版本中),foo可能具有不同的版本,类似于bar的不同之处,这取决于运行它的文件系统的位置。因此fizz将同时具有可执行文件和参数。即

路径1中fizz的内容:

foo bar

路径2中的嘶嘶声内容:

foo1 bar2

然后仅调用文件的内容,而无需指定命令(因为该命令已存在于文件fizz中)。

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

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

ping localhost
ping 127.0.0.1
nslookup hostname1

每个都将与上面的for循环依次运行。

PS!如果需要从批处理文件运行,请提醒您将%翻倍到%%