在Windows批处理脚本中替换$()

时间:2018-11-11 22:26:29

标签: bash batch-file

我正在尝试将bash脚本转换为Windows批处理文件。这是一个非常简单的衬纸,应该将文件的内容作为script.exe的参数,并将结果发送到output.txt

这是有效的bash脚本:

./script.exe $(cat input.txt) > output.txt

我知道这可能是不好的风格,但是可以。问题是,我不知道如何在Windows批处理文件中执行类似$()的操作。当我使用它时,它将发送字符串"$(cat input.txt)"作为参数,而不是运行命令。

1 个答案:

答案 0 :(得分:1)

此bash构造称为命令替换。这是a great answer from @MichaelBurr.

  

您可以将cmd.exe脚本与   for /f命令:

for /f "usebackq tokens=*" %%a in (`echo Test`) do my_command %%a
     

是的,这有点不明显(至少可以这样说),但这就是   在那里。

     

有关血腥细节,请参见for /?

     

旁注:我认为应该在反引号内使用“ echo”   由于for /fcmd.exe /c echo Test的内部命令,因此需要使用“ echo”来完成“ cmd.exe”命令。   以更自然的方式Windows批处理脚本总是让我感到惊讶   以某种方式(但通常不是很好的方式)。

另请参见,关于超级用户:Is there something like Command Substitution in WIndows CLI?