Не буду подробно рассказывать , скажу самую суть
Имеется чат, обладающий следующими качествами:
1. Разделение по чат-группам (много групп и много пользователей)
2. Получение истории общения новыми участниками
3. Общение по сети (выложить скрипт в расшаренную папку и запустить с разных компьютеров)
При запуске, скрипт спрашивает имя чат-группы и имя пользователя.
После ввода требуемых данных, появляется второе окно, служащее консолью для ввода
Теперь запущу этот же BAT-файл (он лежит в расшаренной папке) с другого компьютера сети.
После ввода того же самого имени чата и имени нового пользователя опять же появится второе окно для ввода данных на отправку.
Теперь попробуем пересылать сообщения между абонентами:
Теперь подключимся с третьего компьютера:
И увидим следующую картину:
@rem BatChat @echo off cls pushd "%~dp0" echo Current DIR: "%CD%" if "%~1" == "talk_widget" goto talker rem ================================================ rem //////////////////// :auth echo Enter chat filename to connect ("abc" for example): set /p chat=^> echo Enter your nick: set /p nick=^> start call %0 talk_widget %chat% %nick% rem //////////////////// :listener cls call title "| Chat: %chat% | User: %nick% |" if exist %chat%_history type %chat%_history if not exist %chat% echo. 2>%chat% :listener_loop ping 127.0.0.1 -n 1 -w 20 > nul set oldtext=%text% set /p text=<%chat% if not "%text%" == "%oldtext%" echo %text% goto listener_loop rem //////////////////// rem ================================================ rem //////////////////// rem // %2 - chat name // rem // %3 - user nick // rem //////////////////// :talker set chat=%~2 set nick=%~3 cls call title "| Chat: %chat% | User: %nick% |" call ::cs_in echo (%TIME% %nick% connected)>%chat% call ::cs_out echo (%TIME% %nick% connected)>>%chat%_history :talker_loop cls echo Dear %nick%, type message to send: set /p msg=^> call ::cs_in echo [%TIME% %nick%]: %msg%>%chat% call ::cs_out echo [%TIME% %nick%]: %msg%>>%chat%_history goto talker_loop rem //////////////////// rem ================================================ rem //////////////////// :cs_in if exist "%chat%_cs" ping 127.0.0.1 -n 1 -w 50 > nul set cs_value=%RANDOM% :cs_in_loop echo %cs_value%>%chat%_cs set /p ret=<%chat%_cs if "%ret%" == "%cs_value%" exit /b ping 127.0.0.1 -n 1 -w 10 > nul goto :cs_in_loop rem //////////////////// rem //////////////////// :cs_out del %chat%_cs exit /b rem //////////////////// rem ================================================
Будем уважать автора за такое , я бы сказал открытые Ссылка