给出一个Windows .cmd文件 abc.cmd
abc.cmd > output.log
上面的命令行操作会将执行的输出保存到output.log文件。
是否有运行此命令的选项,以便创建此日志的多个副本。也就是说,我希望在一个位置创建一个副本,在另一个位置创建另一个副本。
请不要让我运行复制命令。我正在寻找命令行"选项"。
答案 0 :(得分:3)
unix tee命令的任何Windows实现都可以完美地运行。那里有免费的选择。我喜欢使用GNU utilities for Windows,其中包括tee.exe。
用法很简单:
abc.cmd | tee out1.txt >out2.txt
或者,您可以使用Windows Scripting Host(WSH)编写自己的tee实现 - 无需下载exe! triggeradeadcat attempted to do so,但该实现存在缺陷,因为它使用基于行的输入/输出而不是基于字符的输入/输出。如果命令在同一行上有交互式提示和响应,它将无法正常工作。
下面是我在许多项目中使用的一个方便的JScript实现。我使用混合JScript /批处理技术,因此可以直接调用该实用程序,而无需指定CSCRIPT。
@if (@X)==(@Y) @end /* Harmless hybrid line that begins a JScript comment
::--- Batch section within JScript comment that calls the internal JScript ----
@echo off
cscript //E:JScript //nologo "%~f0" %*
exit /b
----- End of JScript comment, beginning of normal JScript ------------------*/
var fso = new ActiveXObject("Scripting.FileSystemObject");
var mode=2;
if (WScript.Arguments.Count()==2) {mode=8;}
var out = fso.OpenTextFile(WScript.Arguments(0),mode,true);
var chr;
while( !WScript.StdIn.AtEndOfStream ) {
chr=WScript.StdIn.Read(1);
WScript.StdOut.Write(chr);
out.Write(chr);
}
同样,用法很简单:
abc.cmd | tee out1.txt >out2.txt
答案 1 :(得分:2)
没有这样的命令行选项存在已被其他人评论,但您可以多次运行该命令将它们重定向到不同的文件,如下所示
date > D:\Testing\test.log & date > D:\Testing\test1.log
所以在你的情况下就像
abc.cmd > output.log & abc.cmd > output1.log
答案 2 :(得分:0)
从您发布的网站:
命令> fileS> file - 将输出重定向到单独的文件。
这不是你想要的吗?
答案 3 :(得分:0)
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.CreateTextFile(wscript.Arguments(0), vbtrue)
Do Until Inp.AtEndOfStream
Line=Inp.readline
outp.writeline Line
file.writeline Line
Loop
Haven未经过测试。
dir |cscript tee.vbs filename1.txt > filename2.txt