我正在为局域网联网计算机批量制作聊天风格的系统。
我想检查用户名是否被占用,如果不允许,我如何检查用户在这一行中输入的内容(set /p name2=)
我已经在测试文件中尝试过这个,但无法让它工作
:startup
set "fail="
set "name2="
set /p "name2=Enter Your Username: "
cls
findstr /b /e /l /c:"%name2%" <"Users.twml" >nul || set fail=1
if defined fail (
goto nope
)
:yes
cls
echo yes, you can use that
echo >> Users.twml %name2%
pause
goto endoftest
:nope
cls
echo thats taken try again
ping locahost -n 3 >nul
goto startup
问题是,即使名字没有被记下,它总是会被拒绝。 Users.twml 文件已创建,如果我手动将 :Yes 放在用户选择名称后加载的位置,则会将名称保存到文件中。
我想要的是:用户选择名称,它检查它是否在文件中(已采取),如果是,则重试 goto 启动,如果未采取,则将其写入文件并继续。最好使用 goto 部分命令,这样我就可以指定去哪里......
上面的代码块是我需要帮助的^^^
下面的东西是我目前使用的,它的工作原理只是没有名称验证。
这是我当前用于使用名称选择的块,该块无需名称验证即可工作
:startup
cls
echo Pick A UserName
echo 1-16 Character limit.
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
REM continues on after name picked if matches above requirements with stuff below
echo >> Connected.twml [System] %computername%:%username% Has joined as: %name2%
echo >> Directory.twml [System] %name2% Has joined the chat.
goto chat
这就是我想要给你一个视觉想法的目的。
目前是行不通的
:startup
cls
echo Pick A UserName
echo 1-16 Character limit.
set "fail="
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
REM all the above works, now lets try to check if its taken
findstr /b /e /l /c:"%name2%" <"Users.twml" >nul || set fail=1
if defined fail (
goto nope
)
REM continues on after name picked if matches above requirements with stuff below
echo >> Connected.twml [System] %computername%:%username% Has joined as: %name2%
echo >> Directory.twml [System] %name2% Has joined the chat.
echo >> Users.twml %name2%
goto chat
:nope
cls
echo thats taken try again
ping locahost -n 3 >nul
goto startup
这就是 users.twml 内部的样子 if :yes 如果运行正确
username1
username2
username3
username4
@@@@@@@@@@ 新编辑在这里爆炸@@@@@@@@@@@@@@@@@
所有固定和工作我在文本文件中使用%user2%并在主文件中使用%name2%,所以难怪它们不能一起工作。不过还是不明白 findstr...这就是为什么你在凌晨 1 点睡眠不足时不会编写任何形式的代码,我猜:)