为什么这个管道命令会失败?

时间:2017-09-05 12:53:09

标签: cmd windows-7

如果存在%v%.txt文件,则此批处理文件:

PROMPT $g
SET v="d"
FOR %%F IN ("*.txt") DO ( TYPE "%%F"  )
FOR %%F IN ("*.txt") DO ( SORT "%%F"  )
FOR %%F IN ("*.txt") DO ( TYPE "%%F" | SORT )

产生

>PROMPT $g

>SET v="d"

>FOR %F IN ("*.txt") DO (TYPE "%F"   )

>(TYPE "%v%.txt"   )
content
>FOR %F IN ("*.txt") DO (SORT "%F"   )

>(SORT "%v%.txt"   )
content

>FOR %F IN ("*.txt") DO (TYPE "%F"   | SORT  )

>(TYPE "%v%.txt"   | SORT  )
The system cannot find the file specified.

>

为什么"系统找不到指定的文件"只从具有管道命令的行?

1 个答案:

答案 0 :(得分:1)

使用echo代替type表示扩展是在上一个查找d.txt而不是%v%.txt的命令中完成的,它似乎与|一致被解析两次。

另一个例子:

set a=^%b^%

set b=10

echo %a%

echo %a% | sort