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.
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
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