Windows 7 如何将文本文件连接到管道中?

Windows 7 如何将文本文件连接到管道中?,windows-7,cmd,Windows 7,Cmd,什么命令将匹配通配符模式的文本文件连接到管道中?我想重新编码 COPY Q:\Playlists\*.m3u %TEMP%\all.txt /b >nul SORT %TEMP%\all.txt > %ALL% 没有临时文件,例如 somecommand Q:\Playlists\*.m3u | sort > %ALL% 不带目标文件名的复制将复制到当前目录,而不是管道(并在控制台中放置文件名)。带有通配符源的类型在输出中插入不需要的文件路径。编辑:正如mcnd所指出的,T

什么命令将匹配通配符模式的文本文件连接到管道中?我想重新编码

COPY Q:\Playlists\*.m3u %TEMP%\all.txt /b >nul
SORT %TEMP%\all.txt > %ALL%
没有临时文件,例如

somecommand Q:\Playlists\*.m3u | sort > %ALL%

不带目标文件名的复制将复制到当前目录,而不是管道(并在控制台中放置文件名)。带有通配符源的类型在输出中插入不需要的文件路径。编辑:正如mcnd所指出的,TYPE的不需要的输出将进入stderr,而不是管道(stdout)。

几乎完成。只需删除type命令不需要的输出

type Q:\Playlists\*.m3u 2>nul | sort > %ALL%
type
命令处理多个文件时,已处理文件的列表将回显到标准错误流,即流编号2。因此,获取流2并将其重定向到nul

编辑以适应评论

如图所示,
type
命令仅在操作涉及多个文件时输出文件名。因此,您只能在一个文件上使用
type
命令,并在列表上迭代

(for %%a in (*.m3u) do type "%%a") | sort > %ALL%

谢谢这样做的一个小缺点是会丢失真正的错误消息。你知道不知道的解决方案吗?@ChrisJJ,包括备选方案。谢谢。在其他情况下,提醒您使用(…)进行连接也是件好事。我发现了一个错误所有%包括回显类型命令。修正:(对于(*.m3u)do@type“%%a”)| sort>%ALL%@ChrisJJ中的%%a,如果您有
echo on
,输出将包括
type
命令。如果这是您的情况(很抱歉,我通常使用
echo off
运行所有批处理文件),当然,包含@将相当于仅对其前缀的命令使用
echo off