【问题标题】:How to join output of two commands in one line?如何在一行中加入两个命令的输出?
【发布时间】:2015-06-12 12:01:06
【问题描述】:

例如,以下命令(在 Windows 7 中):

date/t>>t.txt
time/t>>t.txt

在 t.txt 中创建以下行:

Fri 06/12/2015 
01:37 PM

是否可以将两个命令的输出(见上文)合并为一行(见下文)?

Fri 06/12/2015 01:37 PM

上述目标可以通过命令实现:

echo %date% %time%

但这不是这个问题的答案,因为这个问题不仅仅是关于上面的命令。

【问题讨论】:

    标签: windows batch-file command


    【解决方案1】:

    对于任意数量的命令,以更简单的方式:

    @echo off
    setlocal EnableDelayedExpansion
    
    set "output="
    for %%a in ("date /t" "time /t" "echo Hello world") do (
       for /F "delims=" %%b in ('%%~a') do set "output=!output! %%b"
    )
    echo %output:~1%>> t.txt
    

    【讨论】:

    • 对不起@Aachi,但是如果 for /F "delims=" %%b in ('%%~a') do set "output=!output! %%b" 那么有额外的空间2015 年之后:“Mon 06/15/2015 08:41 AM”如果 /F “delims=" %%b in ('%%~a') 确实设置了 "output=!output!%%b" 那么那里错过了信:“2015 年 6 月 15 日上午 8 点 42 分”
    • 我假设您希望每个输出都用空格分隔,就像您的 echo %date% %time% 示例中一样!第一个额外的空格在echo %output:~1%>> t.txt 的“:~1”部分被删除。如果您不想分隔空格,请将最后一行更改为echo %output%>> t.txt
    • @Aachi:是的,需要一个空格。但是,如果您会看到此页面的来源,那么在“2015”之后您将看到的不是一个,而是两个空格(由浏览器更改为一个空格)。
    • 我的意思是在之前评论中的“2015”之后。
    • 但是,无论如何,谢谢!因为"output=!output!%%b"echo %output:~0%>> t.txt 你的代码也可以根据需要工作。
    【解决方案2】:

    可以使用以下命令(在批处理文件中)将两个命令的输出合并为一行:

    for /f "delims=" %%x in ('date/t') do set d=%%x
    for /f "delims=" %%x in ('time/t') do set t=%%x
    echo %d%%t%>>t.txt
    

    【讨论】:

    【解决方案3】:

    也可以使用以下命令(在批处理文件中)将两个命令的输出合并为一行:

    date /t>t_t.txt
    set /p t=<t_t.txt
    time /t>t_d.txt
    set /p d=<t_d.txt
    echo %t%%d%>>t.txt
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多