批量发送回显到另一批

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