【问题标题】:How to concatenate text files into a pipe?如何将文本文件连接到管道中?
【发布时间】:2014-10-21 18:03:18
【问题描述】:

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

COPY Q:\Playlists\*.m3u %TEMP%\all.txt /b >nul
SORT %TEMP%\all.txt > %ALL%

没有临时文件,例如

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

没有目标文件名的 COPY 复制到当前目录,而不是管道(并在控制台中乱扔文件名)。带有通配符源的 TYPE 在输出中插入不需要的文件路径。编辑:正如 MC ND 指出的那样,TYPE 的不需要的输出进入标准错误,而不是管道(标准输出)。

【问题讨论】:

    标签: windows-7 cmd


    【解决方案1】:

    快完成了。只需删除 type 命令的不需要的输出

    type Q:\Playlists\*.m3u 2>nul | sort > %ALL%
    

    type命令处理多个文件时,处理的文件列表会回显到标准错误流,即流号2。因此,取流2并将其重定向到nul

    编辑以适应 cmets。

    如前所述,type 命令仅在操作涉及多个文件时才输出文件名。因此,您可以只对一个文件使用type 命令并遍历列表

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

    【讨论】:

    • 谢谢。这有丢失真正错误消息的轻微缺点。你知道不知道的解决方案吗?
    • @ChrisJJ,包括替代方案。
    • 谢谢。在其他情况下也可以提醒使用 (...) 进行连接。
    • 我发现了一个错误。 %ALL% 包括回显的 TYPE 命令。修复:(对于 (*.m3u) 中的 %%a 执行 @type "%%a")|排序 > %ALL%
    • @ChrisJJ,如果您有echo on,输出将包括type 命令。如果这是您的情况(对不起,我通常使用echo off 运行所有批处理文件),当然,包含@ 将等同于echo off,仅针对它作为前缀的命令。
    猜你喜欢
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多