如何将批处理文件的输出保存到文本文件中,输出也应显示在控制台上。
对于Eg:
@ECHO OFF
ECHO Hello World
@pause
它将在控制台上显示Hello World
@ECHO OFF
ECHO Hello World >text.txt
@pause
它会将Hello World保存到text.txt
我怎么能让它们一起发生?
提前致谢
如果需要,请使用'FOR'命令:(是这个只执行1命令)
For /f "tokens=*" %%a in ('ECHO Hello world') do (
echo %%a
echo %%a >text.txt
)
但是下面的解决方案只有在你想要将两个输出都发送到控制台并提交一个显示大量文本的命令(如'SET'命令)时才有用。 那么你创建一个外部批处理文件然后在主文件中使用呢? 示例:'printBoth.bat'的代码
@echo off
setlocal ENABLEDELAYEDEXPANSION
set string=
:loop
set string=!string!%1
shift
if not "%1"=="" goto loop
For /f "tokens=*" %%a in ('!string!') do (
echo %%a
echo %%a >text.txt
)
现在,如果要打印到控制台和文件,只需输入以下代码:call printBoth.bat [type command in here]
如果要获取命令的输出:
if exist "file.txt" del file.txt /f /q
for /f "delims=" %%k in ('command here') do (
echo %%k
echo %%k>>file.txt
)
>>
。不要使用>
。 >
将删除文件中的所有文本,然后在命令中写入第一行输出行,如果有多行将被FOR
“回显”,那就不好了。 >>
创建了一条新线,而不是像>
那样替换线。DELIMS=
的工作方式与TOKENS=*
相同,但DELIMS=
不包括已执行的命令。我添加了if exist "file.txt" del file.txt /f /q
,以便不添加新的输出行。如果要将行追加到文件中,可以删除它。
对于定制的ECHO
输出,
@echo off
echo TEXTHERE & echo TEXTHERE >>file.txt
echo TEXTHERE2 & echo TEXTHERE >>file.txt
rem ...and so on
<command1> & <command2>
的意思是“做<command1>
,然后做<command2>
”>
而不是>>
。