【问题标题】:How do I include a variable in cmd command?如何在 cmd 命令中包含变量?
【发布时间】:2020-01-22 17:52:15
【问题描述】:

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

mpiexec -n 8 -hosts 1 %hostname% myexe.exe myinputfile.txt

但我得到了这个错误

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

所以它似乎没有正确评估主机名。如何在命令中正确评估主机名?

【问题讨论】:

  • 你为什么认为只是编造一些东西会起作用。键入 set 以查看可用的内容。最后请参阅set /? 了解更多信息。另见winsourcecode.blogspot.com/2019/05/…
  • 我不确定你所说的“编造”是什么意思。你的意思是我编造了“主机名”?我使用了主机名,因为它在您执行主机名时提供了计算机名称。我认为可能有一种方法可以将该命令的输出提取到我的 mpiexec 命令中的变量中。无论如何,似乎有一个变量已经具有名为 COMPUTERNAME 的计算机名称,感谢您的建议设置。所以我只是用主机名交换了它,我的命令现在可以正常工作了。但是出于兴趣,很高兴知道我是否可以将主机名的输出直接插入到 mpiexec 命令中的变量中。
  • 输入For /?,特别是for /f,用于解析命令输出。
  • 您需要成为管理员才能访问此共享dir \\localhost\C$(或dir \\127.0.0.1\C$)将列出任何本地计算机上的 C: 驱动器。

标签: cmd hostname mpiexec


【解决方案1】:

您可以改用localhost

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

mpiexec -n 8 -hosts 1 %COMPUTERNAME% myexe.exe myinputfile.txt

根据hostname 的输出设置变量的神奇之处在于:

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

在 .bat 文件脚本中,将 PERCENT SIGN 字符加倍。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 2019-06-11
    • 2012-11-07
    • 1970-01-01
    相关资源
    最近更新 更多