windows - 我正在尝试制作一个消息系统,理论上可以将消息从一个批处理文件发送到另一个批处理文件,同时保持两者都打开

标签 windows batch-file cmd

我已经为 sender.bat 和 receiver.bat 编写了一些代码,但问题是,当我从 sender.bat 发送消息时,它会调用 receiver.bat,这时我遇到了两个问题: 1) sender.bat 关闭(我希望它保持打开状态以便我可以发送更多消息)并且 receiver.bat 打开(这是我想要的)但是当它打开时它会带来第二个问题。 2)它不断重复相同的(第一条)消息

所以我只给你代码,希望有人知道我做错了什么

发件人.bat:

@echo off
title "Message Sender"
set /p name=Username:

:x
set /p mes=Message:

set nmes=%name% Says: %mes%
call receiver.bat %nmes%
goto x

和接收器.bat:

@echo off

:x
echo %1
echo %1>>conversationlogger.txt
pause
goto x

感谢您的帮助

最佳答案

“保持两个文件都打开”的唯一方法是同时执行它们,也就是说,通过 start 命令或(作为这种情况下的“自然”方式),通过管道连接。

sender.bat:

@echo off
title "Message Sender"
set /p name=Username: > CON

:x
set "mes="
set /p mes=Message: > CON
if not defined mes goto end

set nmes=%name% Says: %mes%
echo %nmes%
goto x

:end
echo Conversation ends > CON

receiver.bat:

@echo off

:x
set "msg="
set /P "msg="
if not defined msg exit /B

echo %msg%
echo %msg%>>conversationlogger.txt
goto x

以这种(显而易见的)方式执行这些文件:

sender | receiver

编辑:我添加了示例 session 的输出:

C:\> sender | receiver
Username: Antonio
Message: This is the first message
Antonio Says: This is the first message
Message: The second line
Antonio Says: The second line
Message: Last message...
Antonio Says: Last message...
Message:
Conversation ends

C:\> type conversationlogger.txt
Antonio Says: This is the first message
Antonio Says: The second line
Antonio Says: Last message...

C:\>

关于windows - 我正在尝试制作一个消息系统,理论上可以将消息从一个批处理文件发送到另一个批处理文件,同时保持两者都打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35683551/

相关文章:

windows - Windows 7 和 Windows Server 2008 R2 中的不同 WinSxS 行为

C++ 从 8 位位图构建像素数据并访问 bmiColor 表信息

java - 如何让 IzPack 将程序添加到程序和功能

java - 在注册表中找不到应用程序 "org.eclipse.cdt.managedbuilder.core.headlessbuild"

internet-explorer - 如何使用批处理文件为ie和chrome设置多个主页?

windows - 在对 FFPROBE 的调用中相当于 linux wc -l 命令的 CMD?

Windows 'dir' 命令,按名称排序和 <something>

windows - 在cmd中建立VPN连接

c++ - 拦截鼠标输入

python - 双击 python 文件与通过 cmd 运行的结果不同