2017-10-25 3 views
0

Ich möchte eine Update-Funktion erstellen, die funktioniert, direkt nachdem der Benutzer aufgefordert wird, in die "ChatBox" einzugeben, so dass andere Benutzer in meinem Schulnetzwerk eingeben können und alle anderen Benutzer können es ohne sehen mit dem Programm oder die Eingabe einen Raum neu zu starten, die TXT-DateiSo erstellen Sie eine Update-Funktion

hier ist der Code, den ich geschrieben habe bisher

@echo off 
:start 
cls 
echo Welcome to ChatBox V1.0 
echo Please Enter the Passcode to Enter 
set /p pass= 
if not "%pass%"=="2730" goto start 

:enter 
cls 
type cblog.txt 
echo. 
set /p text= 
echo %text% >> cblog.txt 
goto enter 
+0

'batch' keine Unterstützung für Inter-Prozess-Kommunikation hat. Vielleicht möchten Sie einen [anderen Ansatz] (https://stackoverflow.com/questions/35683551/im-trying-to-make-a-message-system-that-the-theoretically-send-messages-from-on verwenden/35684010 # 35684010) – Stephan

+0

Ich würde vorschlagen, Sie Google-Suche Batch Chat. Du bist nicht die erste Person, die das macht. – Squashman

Antwort

0

ich dieses Thema mögen, so schrieb ich einen voll funktionsfähigen Prototypen laden:

@echo off 
setlocal 

if "%~1" equ "" echo You must give your username as parameter & goto :EOF 

set "user=%~1" 
set "now=%time%" 
echo %now%: User %user% entered the chat room>> msgQueue.txt 
call :chatRoom 3< msgQueue.txt 
goto :EOF 


:chatRoom 

rem Omit previous messages 
:omitMsg 
    set /P "msg=" <&3 
if "%msg:~0,12%" neq "%now%:" goto omitMsg 
echo %msg% 
echo/ 

echo Press S to send a message or eXit to end 
echo/ 
:msgLoop 

rem Check for new messages received 
:showMsg 
    set "msg=" 
    set /P "msg=" <&3 
    if not defined msg goto send 
    echo %msg% 
goto :showMsg 

rem Check to send a new message 
:send 
ver > NUL 
choice /C SNX /N /T 3 /D N > NUL 
if errorlevel 3 goto end 
if errorlevel 2 goto msgLoop 

rem Send a message 
echo ----------------------------------- 
set /P "msg=Message: " 
echo ----------------------------------- 
echo %user%: %msg% >> msgQueue.txt 
goto msgLoop 

:end 
echo %time%: User %user% leaved the chat room>> msgQueue.txt 

Die Reaktionszeit kann in /T 3 Parameter von choice geändert werden Befehl: kürzere Zeiten macht den Chat reaktionsschneller, aber es verbrauchen mehr CPU-Zeit.

Unten ist ein Bild, das einen Test mit vier Benutzern im Chat-Raum zeigen:

ChatRoom with four users

+0

das Programm scheint zu schließen, sobald ich es geöffnet habe ich denke, es kann sein, weil Sie "goto: EOF" angegeben haben, aber es gibt nichts in Ihrem Code unter dem Namen EOF – Callum

+0

@callum - 'goto: eof' ist ein Systembefehl Das bedeutet "gehe ans Ende des Skripts". – SomethingDark

+0

Wissen Sie, warum der Code zu schließen scheint, sobald er geöffnet wird, muss ich etwas herunterladen, damit der Code funktioniert – Callum