如何在cmd命令中包含变量?

如何在cmd命令中包含变量?,cmd,hostname,mpiexec,Cmd,Hostname,Mpiexec,例如,我希望进程“myexe.exe”在任何主机上运行。因此,我希望在每台计算机上计算主机名并将其插入到命令中。理想情况下,我希望这一切都在一行完成。我尝试了以下代码 mpiexec -n 8 -hosts 1 %hostname% myexe.exe myinputfile.txt 但我犯了这个错误 ... unable to get host address for %hostname% (11001) 因此,它似乎没有正确计算主机名。如何在命令中正确计算主机名?您可以使用localho

例如,我希望进程“myexe.exe”在任何主机上运行。因此,我希望在每台计算机上计算主机名并将其插入到命令中。理想情况下,我希望这一切都在一行完成。我尝试了以下代码

mpiexec -n 8 -hosts 1 %hostname% myexe.exe myinputfile.txt
但我犯了这个错误

... unable to get host address for %hostname% (11001)

因此,它似乎没有正确计算主机名。如何在命令中正确计算主机名?

您可以使用
localhost

但是,在Windows上(由
cmd
标记暗示),您可能应该使用:

mpiexec -n 8 -hosts 1 %COMPUTERNAME% myexe.exe myinputfile.txt
hostname
的输出设置变量的神奇之处在于:

FOR /F %A IN ('hostname') DO (SET "V=%~A")
在.bat文件脚本中,将百分号字符加倍

FOR /F %%A IN ('hostname') DO (SET "V=%%~A")

你为什么认为编点什么就行了。键入
set
查看可用内容。请参见
set/?
,了解结尾的更多信息。我也不知道你说的“编造一些东西”是什么意思。你是说我编造了“主机名”吗?我使用hostname,因为它在执行hostname时提供计算机名。我想可能有一种方法可以将该命令的输出提取到我的mpiexec命令中的变量中。无论如何,似乎有一个变量已经有了名为COMPUTERNAME的计算机名,谢谢你的建议集。所以我只是将其与主机名交换,现在我的命令可以正常工作了。但出于兴趣,如果我能将主机名的输出直接插入mpiexec命令中的变量,那就太好了。键入
for/?
,特别是
for/f
,用于解析命令输出。您需要是管理员才能访问此共享
dir\\localhost\C$
(或
dir\\127.0.0.1\C$
)将在任何本地计算机上列出C:驱动器。