【问题标题】:Windows bat alternative for Bash inline commandBash 内联命令的 Windows bat 替代方案
【发布时间】:2012-08-13 06:58:36
【问题描述】:

是否有任何 Windows 等效语法可以在 bat 脚本文件中的另一个命令中运行命令?

在 Linux 中,您可以简单地使用 $(...) 或 ``。

【问题讨论】:

  • Windows .bat 文件是历史性的倒退,为什么不安装 Perl 呢?
  • 批处理文件仍然占有一席之地——例如,如果您必须在安装脚本中运行一个批处理文件。你不能假设 Perl 会安装在用户的系统上。

标签: windows bash batch-file cmd


【解决方案1】:

是的,至少对于简单的事情:

@setlocal enableextensions enabledelayedexpansion
@echo off
for /f %%w in ('echo xyzzy') do set var=%%w
echo Output is %var%
endlocal

该脚本的输出是:

Output is xyzzy

xyzzy 来自 echo 命令。

从命令窗口运行for /? 应该会为您提供更全面的选项列表。

【讨论】:

  • 我认为这是由“for-in”构造处理的,而不是由 Windows 命令行引擎内部处理的。在我的情况下似乎不起作用:stackoverflow.com/questions/11828801/…
  • @Moshen, for 是我认为你可以做到这一点的唯一方法。甚至bash 也没有使用$() 运行代码,它只是替换了另一个进程的标准输出。这与将其存储在环境变量中然后使用该变量没有什么不同,就像我的回答一样。
  • @Mohsen - FOR 是一个内部命令,所以它肯定是由命令行引擎处理的。
  • FOR 出现在 MS-DOS v2.0 - 这是XP documentation
  • @paxdiablo:我目前没有Windows测试系统——但你不需要添加"usebackq"参数,然后还要使用反引号```来包围echo xyzzy 命令? for /f "usebackq delims= " %%w in (`echo xyz`) 设置 var=%%w
猜你喜欢
  • 2019-04-30
  • 2018-09-09
  • 2012-11-16
  • 2022-01-09
  • 2018-05-03
  • 2011-07-20
  • 2014-12-10
  • 1970-01-01
  • 2013-08-01
相关资源
最近更新 更多