Windows CLI中是否有类似“命令替换”的内容?


14

在Linux(Bash)中,有一种方法可以使用反引号将命令用作另一个命令的参数:

> echo ===== `time` =====

这将打印:

=====当前时间是:12:22:34.68 =====

在Windows的cmd.exe中有没有办法做到这一点?




另请参阅此帖子(使用cmd的doskey命令
misterjaytee 2011年

@misterjaytee:命令替换和别名是不同的东西。
user1686 2011年

@grawity-感谢您指出-自我说明:必须在回答之前正确阅读问题...
misterjaytee 2011年

Answers:


9

尝试这个:

echo. ===== %time% =====

我知道这可能不是您想要的,因为您提到了命令替换 ...所以可能是这样:

for /f "usebackq tokens=*" %i in (`date/t&time/t`) do echo.  ===== %i =====

有关usebackq尝试使用此命令的更多提示:

for /?

4
是的, for /f就是我一直在寻找。谢谢!附带说明:它是如此笨拙且难以记住(与bash方式相比)。我应该放弃“蝙蝠编程”,学习更多有生产力的东西-也许是PowerShell?
Cristi Diaconescu

3

在Windows中,“()”运算符的行为与Bash命令替换类似。

这个Linux脚本:

my_linux_variable=$(ls)
my_alternate_linux_variable=`ls`

echo $my_linux_command=$(ls)
echo $my_alternate_linux_command=`ls`

给出与Windows PowerShell类似的结果:

$my_windowsPS_variable = (dir)

$my_windowsPS_variable

和作为Windows CMD:

set my_windowsCMD_variable=(dir)
%my_windowsCMD_variable%

9
Windows CMD示例错误。cmd Shell中的Parens仅在子Shell中执行命令。env var设置为“(dir)”并在第二行执行(当env var被%包围时)-并不是您真正想要的替代。
davidbak

1
这是不正确的Windows CMD.EXE的行为
JJS

这是PowerShell的,而问题是关于cmd.exe的
劳尔·萨利纳斯,蒙特阿古

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.