将输出写入日志文件并显示在屏幕上的批处理文件

3

我写了一个批处理文件。 是否可以将输出发送到日志文件和屏幕上?? 我的命令是: sqlplus -S %USER_NAME%/%PASSWORD%@%TNS_NAME% OG.2ation.sql 我希望这个命令的输出既能在屏幕上显示,也能记录在日志文件中。????

你可以使用以下命令将输出同时发送到屏幕和日志文件: sqlplus -S %USER_NAME%/%PASSWORD%@%TNS_NAME% OG.2ation.sql | tee logfile.log

еҰӮжһңжӮЁдҪҝз”Ёзҡ„жҳҜ*nixзі»з»ҹпјҢеҲҷеҸҜд»ҘдҪҝз”Ёteeе‘Ҫд»ӨгҖӮдҫӢеҰӮпјҡsqlplus -S ... | tee mylog.logгҖӮ - user1666959
1
另一个重复的问题 - 这个问题有一个简单的混合批处理/JScript答案,使用纯本地脚本提供适当的异步Tee功能:为.bat文件使用自定义Tee命令 - dbenham
1个回答

4

您可以使用批处理编写自己的tee程序。

myProgram | tee.bat outfile.txt一起使用。

@echo off
setlocal DisableDelayedExpansion
set "outfile=%~1"

(
  for /F "usebackq delims=" %%L in (`find /N /V ""`) DO (
    set "line=%%L"
    setlocal EnableDelayedExpansion
    set "line=!line:*]=!"
    (echo(!line!) > con
    (echo(!line!)
    endlocal
  )
) > "%outfile%" 

很好,但不幸的是,如果myProgramstdin读取,则此脚本会遇到问题。例如,如果myProgram是一个有3行的批处理脚本:@echo Hello@pause@echo world,则在myProgram终止之前控制台上什么也不会显示... - Eitan T
是的,它会等到完整的数据传输完毕,但在这种情况下似乎没有问题。 - jeb
1
“myProgram >outfile.txt & type outfile.txt” 这个命令行能否像这个批处理脚本一样有效呢?它确实简单多了。 - dbenham
@dbenham - 嗯,也许你是对的 :-) 但是使用tee.bat,您可以更改tee.bat的代码以进行异步变化。 - jeb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接