我知道在命令提示符下执行时将输出保存到文本文件的一般语法。
但我的需求与众不同。我想在命令提示符窗口中看到它,我也想将它保存在文本文件中。通常使用> c:\ dirlist.txt将保存到文本文件,但无法在命令提示符窗口中看到。
我需要在命令提示符下看到并保存在文本文件中。任何帮助
答案 0 :(得分:2)
首先,编写TEE.BAT程序相对容易。唯一的问题是set /p
命令(用于从命令获取输出)不区分文件末尾和空行。这意味着将捕获输出直到第一个空行(或文件末尾):
@echo off
:: usage: AnyCommand | TEE filename
setlocal EnableDelayedExpansion
if exist %1 del %1
:nextLine
set line=:EOF
set /p line=
if "!line!" == ":EOF" goto :eof
echo(!line!
echo(!line!>> %1
goto nextLine
您可以测试此批处理文件确实以这种方式工作:
tee CopyOfFile.txt < File.txt
然而,当此Batch文件按其设计方式使用时,它会偶尔失败:
type File.txt | tee CopyOfFile.txt
上一行有时可以正常工作,有时只显示和存储文件的第一行。我做了几次测试,无法找出错误的原因。也许有人(杰布?)可以解释在这种情况下发生的事情并给出解决方案。
答案 1 :(得分:1)
您想要相当于Windows的tee
程序。如果您可以使用PowerShell,那么you already have what you need。否则,请使用Google进行适用于您系统的实施。
或者,您可以将输出重定向到文件,并使用另一个命令提示符(即相当于tail
)的实时日志查看器观察该文件。
答案 2 :(得分:0)
你可以像Aacini那样用批量编写自己的T恤,但没有缺点。
@ECHO OFF
setlocal DisableDelayedExpansion
for /F "delims=" %%A in ('findstr /n "^" ') do (
set "line=%%A"
setlocal EnableDelayedExpansion
set "line=!line:*:=!"
(echo(!line!)
(echo(!line!) > "%~1"
endlocal
)
最初的想法是来自walid2me echo to screen and file in a single line
答案 3 :(得分:0)
以下是显示和记录命令输出的另一种方法:
@Echo off & CD "%~dp0"
For /F "UsebackQ Tokens=* Delims=" %%A in (`"%~1"`) do (
>>Outputfile.txt Echo(%%A
Echo(%%A
)
Goto :EOF