Je crée un système de style de discussion pour les ordinateurs en réseau LAN, et je veux vérifier si le nom d'utilisateur est utilisé ou non. Je ne peux pas le faire fonctionner bien, voici ce que j'ai dans un fichier de test, qui fonctionne ...Batch - vérifier si l'entrée de l'utilisateur est dans un fichier texte puis continuer
@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
Cela prend l'entrée d'utilisateur, vérifie le fichier pour voir si elle est là-dedans, si Il est, dit-il, ne peut pas utiliser, si ce n'est pas là, il dit peut utiliser et enregistre le nom dans le fichier texte afin que d'autres ne peuvent pas choisir le même. Cependant, quand je l'ai mis dans mon dossier principal qui im faire la même chose ne fonctionne pas, lors de l'enregistrement du nom de fichier des enregistrements de fichiers
ECHO is off.
causé par cette ligne ici
>> Users.twml echo %user2%
et non la Nom d'utilisateur que l'utilisateur a entré, Curieusement, bien que cela fonctionne dans le fichier de test parfaitement, voici la section de mon fichier principal qui ne fonctionne pas.
@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
est ici à l'intérieur de Users.twml 2 premières lignes ont été écrites par le fichier de test, les autres par mon dossier principal.
twml
bob
ECHO is off.
ECHO is off.
ECHO is off.
Au début, je l'ai essayé findstr, mais n'a pas pu le faire fonctionner, donc j'utilisé errorlevel comme je ne sais comment ça fonctionne très bien. mais il ne sera pas enregistrer le nom de fichier en utilisant mon fichier principal. Je suis bloqué avec ceci parce que les lignes pour Connected.twml et Directory.twml écrivent leur contenu, juste Users.twml ne le fera pas.
Je vote pour fermer cette question hors sujet, car il est un [existant question par le même membre] (https://stackoverflow.com/q/46396536/6738015). – Compo
TBG 1500, s'il vous plaît ne pas essayer de fermer votre propre question afin de le demander à nouveau, surtout sans relier l'original et les réponses. – Compo