为了账号安全,请及时绑定邮箱和手机立即绑定

对.bat文件使用定制的Tee命令

对.bat文件使用定制的Tee命令

小怪兽爱吃肉 2019-10-30 14:42:13
我正在尝试使用为bat文件编写的T恤代码,但是在我的代码中无法实现它。我不想使用任何第三方安装来解决上述问题,因为如果我一年内格式化计算机并希望再次运行该程序,我希望代码能够正常工作。我以这种方式设置它:mycommand.exe | tee.bat -a output.txt我尝试过使用单独的.bat文件,并尝试在原始文件中包含(以功能形式).bat无济于事:myprogram.exe | call tee -a output.txtecho.echo.echo.SET /P restart="Do you want to run again? (1=yes, 2=no): "if "%restart%"=="1" GOTO LoopStart::--------------------------------------------------------::-- Function section starts below here::--------------------------------------------------------:tee:: Check Windows versionIF NOT "%OS%"=="Windows_NT" GOTO Syntax| :: Keep variables localSETLOCAL:: Check command line argumentsSET Append=0IF /I [%1]==[-a] (    SET Append=1    SHIFT)IF     [%1]==[] GOTO SyntaxIF NOT [%2]==[] GOTO Syntax:: Test for invalid wildcardsSET Counter=0FOR /F %%A IN ('DIR /A /B %1 2^>NUL') DO CALL :Count "%%~fA"IF %Counter% GTR 1 (    SET Counter=    GOTO Syntax):: A valid filename seems to have been specifiedSET File=%1:: Check if a directory with the specified name existsDIR /AD %File% >NUL 2>NULIF NOT ERRORLEVEL 1 (    SET File=    GOTO Syntax):: Specify /Y switch for Windows 2000 / XP COPY commandSET Y=VER | FIND "Windows NT" > NULIF ERRORLEVEL 1 SET Y=/Y:: Flush existing file or create new one if -a wasn't specifiedIF %Append%==0 (COPY %Y% NUL %File% > NUL 2>&1):: Actual TEEFOR /F "tokens=1* delims=]" %%A IN ('FIND /N /V ""') DO (    >  CON    ECHO.%%B    >> %File% ECHO.%%B):: DoneENDLOCALGOTO:EOF:CountSET /A Counter += 1SET File=%1GOTO:EOF:SyntaxECHO.ECHO Tee.bat,  Version 2.11a for Windows NT 4 / 2000 / XPECHO Display text on screen and redirect it to a file simultaneouslyECHO.IF NOT "%OS%"=="Windows_NT" ECHO Usage:  some_command  ¦  TEE.BAT  [ -a ]  filenameIF NOT "%OS%"=="Windows_NT" GOTO SkipECHO Usage:  some_command  ^|  TEE.BAT  [ -a ]  filename:SkipECHO.我正在尝试分割输出,以便可以将控制台输出保存到文件中,同时仍然能够与正在运行的程序进行交互。我如何才能使Tee命令与.bat一起正常使用,以便可以将输出分为文件和控制台。
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

不错,只有一部分I believe pure native batch always reads entire lines是错误的,我在一些多线程批处理中使用了它 

查看完整回答
反对 回复 2019-10-30
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

这对我有用。您确定mycommand.exe输出到stdout而不是stderr吗?要捕获后者,您需要mycommand.exe 2>&1 | call tee ... 

查看完整回答
反对 回复 2019-10-30
  • 3 回答
  • 0 关注
  • 998 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信