2013-02-25 40 views
1

我试图重定向输出和错误到同一个文件执行以下操作:重定向输出和错误,以相同的文件在一个声明(一批)

dir c:\*.mp3 c:\*.mpa c:\*.asf c:\*.avi c:\*.flv c:\*.mov c:\*.mp4 c:\*.mpg c:\*.swf c:\*.vob c:\*.wmv /s/b > out.file.nlm.txt 2>&1

这不是工作 - 我很老了“找不到文件”错误的文件中 - 但是当我把它分解成多个语句,如:

dir c:\*.mp3 /s/b> out.file.nlm.txt 2>&1 
dir c:\*.mpa /s/b >> out.file.nlm.txt 2>&1 
dir c:\*.asf /s/b >> out.file.nlm.txt 2>&1 

它工作正常。我怎样才能把它合并成一个声明?

回答

0

可以封闭dir命令转换为括号块和重定向适用于整个块:

(
dir c:\*.mp3 /s/b 
dir c:\*.mpa /s/b 
dir c:\*.asf /s/b 
) > out.file.nlm.txt 2>&1 

在命令提示符下,你可以把这些命令放在同一行与&小号界定它们:

(dir c:\*.mp3 /s/b & dir c:\*.mpa /s/b & dir c:\*.asf /s/b) >out.file.nlm.txt 2>&1 
1

你没有捕捉“找不到文件”与原来的语句,因为它不存在:-)

DIR命令默认分别列出每个文件掩码的结果,但仅在未找到任何掩码的文件时才会出现“文件未找到”消息。

如果应用排序/ON选项,并且多个扩展混合在一起,则更直观。显而易见,最终的错误状态和错误消息适用于累计结果。

如果您需要一条消息指出哪些扩展名不存在,那么将其分解为多个DIR命令,就像您所做的那样,这是一条路。 Andriy展示了如何将这些命令括在括号中,因此您只需要重定向一次。

相关问题