在 Linux 中,这将接受一个命令,并将其输出(stdout)传递给另一个命令:
echo `ls`
Windows/cmd/batch 等效于什么?
答案1
答案2
echo 输出的示例dir
(使用单引号,而不是反引号!):
echo off & for /f "delims=" %A in ('dir') do echo %A
在交互模式下,您需要输入echo on
并按Enter退出。如果您确定循环只运行一次(即输出是('xxx')
一行),那么您可以直接echo on
在命令中附加。
echo off & for /f "delims=" %A in ('set /a 0x3DE1') do net helpmsg %A & echo on
由于未知原因,('set /a 0x3DE1')
无法执行类似操作'set /a c=0x3DE1'
,即使set /a c=0x3DE1
它作为单个命令工作。
echo hello world
from 'echo hello world'
(单引号)的示例:
echo off & for /f "delims=" %A in ('echo hello world') do echo %A
echo hello world
from ""
(文字字符串)的示例:
echo off & for /f "delims=" %A in ("hello world") do echo %A
以上语法%A
适用于交互模式,需要%
在批处理文件中重复,例如%%A
如果echo %A
在循环内执行此操作,请小心,想象一下,如果命令输出中的其中一行名为on
,则会出现 2 个问题:
[1]echo $A
表示echo on
不会回显任何内容,并且不可见。我只能想到比较来on
处理这种特定情况。
[2]echo $A
表示echo on
将切换回命令提示符输出;您可能需要echo off
在循环内添加额外的内容,例如:
echo off & for /f "delims=" %A in ('dir /b') do echo %A & echo off
请注意,上面的示例远不等同于,``
因为它逐行运行参数。您可以创建此批处理来尝试模拟echo `ls`
(它循环并将所有行附加到用空格分隔的单个变量中,然后稍后作为参数传递):
@echo off
Setlocal EnableDelayedExpansion
set fls=
for /f "delims=" %%A in ('dir /b') do set fls=!fls! %%A
echo %fls%
-- 编辑:添加缺失的空格