如何将批处理文件的输出保存到文本文件中,并在控制台上显示输出。
例如:
@ECHO OFF
ECHO Hello World
@pause
它将在控制台上显示“Hello World”
@ECHO OFF
ECHO Hello World >text.txt
@pause
它将把“Hello World”保存到text.txt文件中。
我如何同时实现这两个操作?
提前感谢。
如何将批处理文件的输出保存到文本文件中,并在控制台上显示输出。
例如:
@ECHO OFF
ECHO Hello World
@pause
它将在控制台上显示“Hello World”
@ECHO OFF
ECHO Hello World >text.txt
@pause
它将把“Hello World”保存到text.txt文件中。
我如何同时实现这两个操作?
提前感谢。
如果你想要获取命令的输出:
if exist "file.txt" del file.txt /f /q
for /f "delims=" %%k in ('command here') do (
echo %%k
echo %%k>>file.txt
)
>>
而不是>
。如果使用>
,它会删除文件中的所有文本,然后在命令中写入第一行输出的内容,如果有多行将被FOR
“echo-ed”,这样做并不好。而>>
会创建一个新行而不是像>
那样替换行。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>
”>
代替 >>
。dir
这样的命令的区别)在这里查看其他一些实现方法。 - Stephandelims=
,因为如果我使用 tokens=*
,则会包含 dir
命令。 - amegyoushi如果您想要使用'FOR'命令:(是的,这个命令只执行一个命令)
For /f "tokens=*" %%a in ('ECHO Hello world') do (
echo %%a
echo %%a >text.txt
)
@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 [在此处输入命令]