在批处理脚本中回显到多个文件

Posted

技术标签:

【中文标题】在批处理脚本中回显到多个文件【英文标题】:Echo into multiple files in Batch script 【发布时间】:2011-11-30 18:37:10 【问题描述】:

如何在单个命令中将一行回显到多个文件中? 示例:echo Hello World! 放入 file1.log 和 file2.log

编辑:Windows-XP 批处理脚本

挑战:给我一个单线 =D。如果不能用一行来完成,我不感兴趣。

我的解决方案是

ECHO Hello World!>tmp.log & COPY file1.log + tmp.log & COPY file2.log + tmp.log

但我希望一个是单个命令而不是多个命令。

【问题讨论】:

【参考方案1】:

如果您只需要单行(输入),您可以使用批处理编写自己的 tee。

@ECHO OFF
rem *** singleLineTee destination1 destination2
setlocal EnableDelayedExpansion
set /p var=
> %1 echo(!var!
> %2 echo(!var!

并与echo hello | singleLineTee file1.log file2.log一起使用

编辑:与单衬里相同

echo hello | ( cmd /v:on /c "set /p var=& >> file1.log echo !var!& >> file2.log echo !var!")

cmd /v:on /c 是启用延迟扩展所必需的

【讨论】:

已编辑帖子:Windows-XP 需要它 tee 不是内部或外部命令、可运行程序或批处理文件。 显然,你应该把上面的代码放到一个名为singleLineTee.bat的批处理中【参考方案2】:
echo "Hello World" | tee file1.log file2.log

【讨论】:

@Mechaflash 抱歉,我将“batch”读为“bash”并认为是 linux。【参考方案3】:

您可以执行类似于 jeb 的操作,但将其保存在与调用代码相同的批处理文件中

@ECHO OFF
    del tem1.txt
    del tem2.txt
    call :SingleLineTeeSub "echo Hello" Tem1.txt Tem2.txt
    call :SingleLineTeeSub "echo World" Tem1.txt Tem2.txt
    call :SingleLineTeeSub "Dir tem1.txt" Tem1.txt Tem2.txt
goto :eof

:SingleLineTeeSub
    rem *** call :SingleLineTeeSub "command [params]" destination1 destination2
    setlocal EnableDelayedExpansion
    set theCmd=%~1
    >> %2 %theCmd%
    >> %3 %theCmd%
goto :eof

【讨论】:

【参考方案4】:

这是否符合您的要求:

(echo hello > file1) && copy file1 file2

【讨论】:

以上是关于在批处理脚本中回显到多个文件的主要内容,如果未能解决你的问题,请参考以下文章

将变量内容回显到文本文件中的批处理脚本[重复]

从 Windows 批处理 (.bat) 脚本中回显带有 Unix 行尾的文本

如何在批处理文件中回显换行符?

使用Windows命令行将多行环境变量回显到文本文件

for循环中的多个do命令:将字符串回显到文件然后重定向到命令窗口

如何调试.BAT脚本?