批量发送回显到另一批
Batch send echo to another batch
我已经搜索了一段时间以找到正确执行此操作的方法,但一直未能成功。我想知道如何让两个批处理文件相互通信。这个想法是试图制作一个实时控制台,而不是一个批处理文件进行计算,将结果打印在一个 .txt 文件中,我希望看到它们实时显示在它旁边打开的另一个批处理文件中。知道这怎么可能吗?到目前为止,我一直在使用
set logfile="Files\Storage\log.txt"
set logg=^> _^& type _^&type _^>^>%logfile%
然后在我想要记录的每个回显的末尾添加 %logg%,如下所示:
echo Hello world %logg%
我想知道是否有办法使用 %success% 将其发送到另一个批处理文件,并使其作为回显打印在第二批处理文件上。例如:
第 1 批:
@echo off
title Batch 1
pause
REM so it says press any key to continue, and once any key is pressed:
echo Hello World %success%
pause
echo How are you today Stack Overflow %success%
pause
exit
第 2 批看起来像:
第一次暂停后:
Hello World
第二次暂停后:
Hello World
How are you today Stack Overflow
并且第 2 批不断刷新并添加行(也许这可以使用检查来自另一批的输入的循环来完成?)
我不确定具体该怎么做,尤其是第二批代码。我试过使用
echo echo Hello World > batch2.bat
但这会删除 batch2 脚本的内容并用 "echo Hello World" 替换所有代码并且不会将其作为回显打印在文件上,因为它会删除 @echo off 和任何保持 batch2 的循环打开。
如有任何帮助,我们将不胜感激!
~提前致谢:)
下面的代码可以做你想做的,但你应该意识到有几个同步细节必须解决: 1. 你必须 select Batch1 的 window 在按键之前对于第一个 pause
命令,以及 2. Batch1 必须通知 Batch2 它应该终止;否则,Batch2永远不会结束。
这是Batch1.bat:
@echo off
title Batch 1
rem Create the communication file
copy NUL log.txt > NUL
rem Define the send variable
set "success=>> log.txt"
rem Activate Batch 2 as receiver
start Batch2 ^< log.txt
pause
REM so it says press any key to continue, and once any key is pressed:
echo Hello World %success%
pause
echo How are you today Stack Overflow %success%
pause
rem Send to Batch2 the signal to terminate
echo exit%success%
exit /B
这是Batch2.bat:
@echo off
:inputLoop
set "input="
set /P "input="
if not defined input goto inputLoop
if "%input%" equ "exit" exit
echo %input%
goto inputLoop
我已经搜索了一段时间以找到正确执行此操作的方法,但一直未能成功。我想知道如何让两个批处理文件相互通信。这个想法是试图制作一个实时控制台,而不是一个批处理文件进行计算,将结果打印在一个 .txt 文件中,我希望看到它们实时显示在它旁边打开的另一个批处理文件中。知道这怎么可能吗?到目前为止,我一直在使用
set logfile="Files\Storage\log.txt"
set logg=^> _^& type _^&type _^>^>%logfile%
然后在我想要记录的每个回显的末尾添加 %logg%,如下所示:
echo Hello world %logg%
我想知道是否有办法使用 %success% 将其发送到另一个批处理文件,并使其作为回显打印在第二批处理文件上。例如:
第 1 批:
@echo off
title Batch 1
pause
REM so it says press any key to continue, and once any key is pressed:
echo Hello World %success%
pause
echo How are you today Stack Overflow %success%
pause
exit
第 2 批看起来像:
第一次暂停后:
Hello World
第二次暂停后:
Hello World
How are you today Stack Overflow
并且第 2 批不断刷新并添加行(也许这可以使用检查来自另一批的输入的循环来完成?)
我不确定具体该怎么做,尤其是第二批代码。我试过使用
echo echo Hello World > batch2.bat
但这会删除 batch2 脚本的内容并用 "echo Hello World" 替换所有代码并且不会将其作为回显打印在文件上,因为它会删除 @echo off 和任何保持 batch2 的循环打开。
如有任何帮助,我们将不胜感激!
~提前致谢:)
下面的代码可以做你想做的,但你应该意识到有几个同步细节必须解决: 1. 你必须 select Batch1 的 window 在按键之前对于第一个 pause
命令,以及 2. Batch1 必须通知 Batch2 它应该终止;否则,Batch2永远不会结束。
这是Batch1.bat:
@echo off
title Batch 1
rem Create the communication file
copy NUL log.txt > NUL
rem Define the send variable
set "success=>> log.txt"
rem Activate Batch 2 as receiver
start Batch2 ^< log.txt
pause
REM so it says press any key to continue, and once any key is pressed:
echo Hello World %success%
pause
echo How are you today Stack Overflow %success%
pause
rem Send to Batch2 the signal to terminate
echo exit%success%
exit /B
这是Batch2.bat:
@echo off
:inputLoop
set "input="
set /P "input="
if not defined input goto inputLoop
if "%input%" equ "exit" exit
echo %input%
goto inputLoop