2017-09-25 5 views
0

Ich mache ein Chat-Stilsystem für LAN-Netzwerkcomputer und möchte überprüfen, ob der Benutzername verwendet wird oder nicht. Ich kann es nicht bekommen, obwohl zu arbeiten, hier ist das, was ich in einer Testdatei haben, das funktioniert ...Batch - Überprüfen Sie, ob Benutzereingaben in einer Textdatei sind, und fahren Sie fort

@echo off 
title Testing usercheck 

setlocal EnableDelayedExpansion 

set "user2=" 
set /p "user2=" 
find /c "%user2%" Users.twml 
if %errorlevel% equ 1 goto yes 
goto nope 


:empty 
cls 
echo empty response, should not be triggered... 
pause 
goto end 


:yes 
cls 
echo yes, you can use that 
>> Users.twml echo %user2% 
pause 
goto end 


:nope 
cls 
echo nope. that is taken... try again! 
pause 
goto end 


:end 
cls 
echo. 
echo End of testing file... 
echo. 
echo press any key to exit 
pause>nul 
exit 

Diese Benutzereingabe erfolgt, überprüft die Datei, um zu sehen, ob es da drin ist, wenn Es ist, sagt, kann nicht verwenden, wenn es nicht da ist, heißt es verwenden und speichert den Namen in der Textdatei, so dass andere nicht auswählen können. Allerdings, wenn ich es in meinem Haupt-Datei, die die gleiche Sache funktioniert nicht im, machen, wenn Sie den Namen Speichern der Datei Datensätze

ECHO is off. 

verursacht wird durch diese Linie hier

>> Users.twml echo %user2% 

und nicht die Datei Username der Benutzer eingegeben, Seltsam, obwohl es in der Testdatei perfekt funktioniert, hier ist der Abschnitt meiner Hauptdatei, die nicht funktioniert.

@echo off 
title Batch Chat Room 
mode con: cols=83 lines=10 

setlocal EnableDelayedExpansion 


:startup 
cls 
echo Pick A UserName 
echo 1-16 Character limit. 
set "user2=" 
set /p "name2=" 
if "!name2!" == "" goto startup 
if "!name2!" == " " goto startup 
if "!name2!" == " " goto startup 
if "!name2!" == " " goto startup 
if "!name2!" == " " goto startup 
if "!name2!" == "  " goto startup 
if "!name2!" == "  " goto startup 
if "!name2!" == "  " goto startup 
if "!name2!" == "  " goto startup 
if "!name2!" == "   " goto startup 
if "!name2!" == "   " goto startup 
if "!name2!" == "   " goto startup 
if "!name2!" == "   " goto startup 
if "!name2!" == "    " goto startup 
if "!name2!" == "    " goto startup 
if "!name2!" == "    " goto startup 
if "!name2!" == "    " goto startup 
if not "!name2:~16!" == "" goto over 
find /c "%user2%" Users.twml 
if %errorlevel% equ 1 goto conta 
goto tryagaina 


:conta 
cls 
echo yes, you can use that 
>> Users.twml echo %user2% 
pause 
:: This pause is just for testing to add a wait here 
copy /y NUL Connected.twml >NUL 
copy /y NUL Directory.twml >NUL 
attrib +h Connected.twml 
attrib +h Directory.twml 
cls 
>> Connected.twml echo [System] %computername%:%username% Has joined as: %name2% 
>> Directory.twml echo [System] %name2% Has joined the chat. 
title Lightfoot Web - Batch ChatRoom - (User Typing) - (Username:%name2%) 
goto A 


:tryagaina 
goto startup 

Hier ist das Innere von Users.twml ersten 2 Zeilen durch die Testdatei geschrieben wurden, die anderen durch meine Hauptdatei.

twml 
bob 
ECHO is off. 
ECHO is off. 
ECHO is off. 

Zuerst versuchte ich findstr, konnte aber nicht die Arbeit an, so verwendet i Errorlevel wie weiß ich, wie das funktioniert ganz gut. aber es speichert den Namen nicht in der Datei mit meiner Hauptdatei. Ich stehe damit, weil die Zeilen für Connected.twml und Directory.twml ihren Inhalt schreiben, nur Users.twml nicht.

+1

Ich wähle diese Frage zu schließen, wie Off-Topic, weil es sich um eine [bestehende Frage von demselben Mitglied] (https://stackoverflow.com/q/46396536/6738015). – Compo

+0

TBG 1500, bitte versuchen Sie nicht, Ihre eigene Frage zu schließen, um sie erneut zu stellen, insbesondere ohne das Original und irgendwelche Antworten zu verknüpfen. – Compo

Antwort

0

Beantwortet!

Ich bin so ein Idiot lol Ich verwendete% name2% in meiner Hauptdatei und% user2% in der Testdatei, so natürlich die Teile nicht zusammen arbeiten, sie nicht die gleiche Variable. Duh ...

Hier ist der feste Code:

:startup 
cls 
echo Pick A UserName 
echo 1-16 Character limit. 
set "name2=" 
set /p "name2=" 
if "!name2!" == "" goto startup 
if "!name2!" == " " goto startup 
if "!name2!" == " " goto startup 
if "!name2!" == " " goto startup 
if "!name2!" == " " goto startup 
if "!name2!" == "  " goto startup 
if "!name2!" == "  " goto startup 
if "!name2!" == "  " goto startup 
if "!name2!" == "  " goto startup 
if "!name2!" == "   " goto startup 
if "!name2!" == "   " goto startup 
if "!name2!" == "   " goto startup 
if "!name2!" == "   " goto startup 
if "!name2!" == "    " goto startup 
if "!name2!" == "    " goto startup 
if "!name2!" == "    " goto startup 
if "!name2!" == "    " goto startup 
if not "!name2:~16!" == "" goto over 
find /c "%name2%" Users.twml 
if %errorlevel% equ 1 goto conta 
goto tryagaina 


:conta 
cls 
echo yes, you can use that 
>> Users.twml echo %name2% 
pause 
:: This pause is just for testing to add a wait here 
copy /y NUL Connected.twml >NUL 
copy /y NUL Directory.twml >NUL 
attrib +h Connected.twml 
attrib +h Directory.twml 
attrib +h Users.twml 
cls 
>> Connected.twml echo [System] %computername%:%username% Has joined as: %name2% 
>> Directory.twml echo [System] %name2% Has joined the chat. 
title Batch Chat Room (Username:%name2%) 
goto A 


:tryagain 
goto startup 

dies funktioniert jetzt, Fall :) geschlossen

Verwandte Themen