检查用户输入是否在txt文件中,使用批处理

2024-01-03

我正在为局域网联网计算机批量制作聊天风格的系统。 我想检查用户名是否被占用,如果不允许,我如何检查用户在这一行中输入的内容(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 点睡眠不足时不会编写任何形式的代码,我猜:)


你已经迷茫了|| and &&(我也是,所以我从不使用它们)

&&意思是“成功的”,即errorlevel is 0. ||意思是相反的。

findstr如果目标字符串将“成功”is成立。 (嗯,当然你不想要/i - and /b /e相当于/x)

如果你修复了|| to &&那么——好吧,也许found而不是fail...

BUT

您的代码仍然无法工作,因为您在文件中记录的数据前面会有一个空格。 a 中的任意字符echo行,一旦重定向和目标定义被删除,第一个空格以外的内容将被重定向到文件。你的代码是

echo
space
redirection specifier including filename
space
%user2%

so, removing the redirection string and the first space leaves Space%user2%

修复使用

>> %twml% echo %user2%

ie

redirection specifier including filename
space
echo
space
%user2%

第一个空格将重定向巫术与echo指令,第二个分隔echo来自所需的字符串。


这是我的测试设置,使用您原来的方法,cls,删除延迟并使用适合我的系统的文件

@ECHO Off
SETLOCAL
:startup
SET "twml=u:\users.twml"
set "fail="
set "user2="
set /p "user2=Enter Your Username: "
REM cls
IF NOT DEFINED user2 GOTO :EOF 
findstr /X /l /c:"%user2%" <"%twml%" >nul && set fail=1
if defined fail (
 goto nope
)


:yes
REM cls
echo yes, you can use that
>> %twml% echo %user2%
goto :eof



:nope
REM cls
echo thats taken try again
:: ping locahost -n 3 >nul
goto startup
GOTO :EOF

对我来说效果很好!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查用户输入是否在txt文件中,使用批处理 的相关文章

  • 小于或等于

    使用暂停命令我发现错误位于此代码的第一行 if choice 1 if energy gt m2enc set a enemhp enemhp m1hpd earmr pause set a energy energy m1enc set
  • 使用特定的 JRE 运行 JAR 文件

    在 Windows 上有没有办法使用位于特定文件夹中的 JRE 运行 JAR 文件 类似于 Eclipse 在您提供给它的某个路径中查找其 JRE 的方式 一些 Windows 可执行代码 C 或 C 或批处理文件都可以完成这项工作 谢谢
  • Chrome 扩展 - 消息传递到批处理文件

    我使用了示例项目https developer chrome com extensions samples https developer chrome com extensions samples我能够运行 python 本机应用程序 有
  • 为什么 C# ProcessStartInfoRedirectStandardOutput 会导致 xcopy 进程失败

    这有点痛苦 因为我现在没有代码 但我会尽力解释 我有一个简单的 C 应用程序 它启动 Ruby 脚本 它还执行一些其他操作 因此它生成一个批处理文件并执行该文件 我正在使用 C 进程对象并设置以下内容 重定向标准输出 true 重定向标准错
  • 如何使用批处理文件同时运行多个python脚本

    我有很多 python 脚本 通过单击它们单独运行每个脚本是一件痛苦的事情 如何制作一个批处理文件来一次运行它们 只需制作一个像这样的脚本作为每个任务的后台 在 Windows 上 start B python script1 py sta
  • 如何编写 .bat 或 .cmd 文件来从 PATH 中删除元素?

    Related 如何列出批处理文件中路径的元素 https stackoverflow com questions 1424558 FOR 是如何运作的 https stackoverflow com questions 817280 ho
  • 如何对 NT 批处理文件中的空格进行 URL 编码?

    我很不幸地使用了一个程序 该程序要求传递给它的所有文件名都是有效的 URL 不 我不知道为什么 而不是必须下降到命令行并手工制作file 每次 我都会将 URL 放在一起生成一个批处理文件 我可以简单地将从 Windows GUI 拖动的文
  • 带有 FOR 的批处理脚本不起作用

    我需要以下脚本的帮助 machine txt 的下一行不会继续 如果我把 放在 echo machine 后面 它会显示 machine txt 中的机器 因此 它可以工作 但是当 位于脚本末尾时 它不会继续 并退出 echo off se
  • 将目录添加到path环境变量

    我的要求是将目录之一添加到path安装我的应用程序时 Windows 中的环境变量并将其删除path使用批处理文件卸载时的环境变量 在与此相关的 stackoverflow 答案之一中 建议将目录添加到路径环境变量中 setx path C
  • 批处理文件 - 读取特定行,并将该行中的特定字符串保存为变量

    有没有办法让 for f 循环 或其他任何东西 读取特定行 这是我到目前为止的代码 它读取每一行的第一个单词 echo off set file readtest txt for f tokens 1 delims A in file do
  • 如何查找具有特定模式的文件夹和文件

    我想编写一个批处理文件 该文件将写入日志包含特定模式以及排除文件夹的所有文件和文件夹 但没有成功 ECHO OFF for r c x in david do echo x findstr f exclude txt c x gt nul
  • 如何使用 winrar 提取与 zip 文件同名的文件夹中的所有 zip 文件?

    我需要迭代一个文件夹 对于每个 zip 文件 我需要使用它的名称来提取它 也就是说 如果它是 test zip 那么它应该解压到 test 文件夹 同样 它应该迭代我的文件夹及其子文件夹并提取内容 我编写了下面的代码 但它没有使用 zip
  • REG ADD - 语法无效

    我试图通过在批处理文件中使用以下代码行来修改注册表中的值 但当我在参数周围使用双引号时 我不断收到 错误 语法无效 而当我使用单引号时 我不断收到 无效的键名 REG ADD HKLM SOFTWARE Microsoft Windows
  • 在批处理文件中添加 +1 到日期

    我有一个批处理文件 可以很好地创建今天的日期 现在我需要更新它以显示明天的日期 任何帮助深表感谢 echo off set TimeStamp 12 00 00 FOR F TOKENS 1 DELIMS A IN DATE T DO SE
  • 我应该如何传递密码(包含特殊字符)作为命令行参数?

    我有一个部署脚本 必须将 LDAP 密码作为命令参数传递给该脚本 实际密码 foo ser ver 1 包含三个空格字符 开头 之前1 之后1 e g bin gt deployment bat LDAPPassword foo ser v
  • 从目录获取第一个文件名的批处理脚本

    我的函数需要特定目录中的第一个文件名来使用第一个文件处理一些测试 完成测试后从目录中删除第一个文件 我尝试如下 FOR R
  • 批处理文件搜索与本地文件同名的文件夹并将所述文件移动到找到的文件夹不起作用

    因此 我尝试创建一个批处理文件 该文件将在与批处理文件相同的目录中获取 pdf 文件并输出文件名 无扩展名 我使用这段代码来完成此任务 echo off for r C Users me Test Folder G in pdf do se
  • 排除批复制脚本中的文件夹

    我正在使用 U 盘上的批处理文件来备份我的照片 我使用以下命令 for r C x in jpg png gif do copy y x 我想排除邮件文件夹 WINDOWS 和 PROGRAM FILES 中的文件 有谁知道如何使用批处理文
  • 更改desktop.ini不会在Windows中自动更新文件夹图标

    我使用此批处理脚本将所有文件夹和子文件夹的图标更改为位于文件夹中的 ico 文件 但是 资源管理器中的文件夹图标不会改变除非我手动重命名desktop ini将资源管理器中的文件更改为其他内容 然后返回desktop ini或者例如将字母更
  • 如何从Windows阻止社交媒体[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想根据时间阻止我的电脑上的社交媒体 晚上 9 点后屏蔽 上午 11 点后解锁 如家长控制 我尝试过关注但失败了 创建了

随机推荐

  • MATLAB调用DLL中函数时的堆栈限制是多少

    我试图弄清楚 当 MATLAB 调用 DLL 中的函数时 堆栈大小限制是多少 有没有办法配置限制 我在用loadlibrary and calllib函数来调用 C 实现的函数 在动态链接库中 我创建了一个测试来找出堆栈限制 我使用 MAT
  • MediaRecorder 无效状态 16

    我正在尝试录制音频并保存到 SD 卡 我收到无效状态异常 我添加了正确的权限 例如 record audio 和 write external storage 我在调用 start 之前已经准备好了 MediaRecorder 为什么我会遇
  • 在后台扫描 Android 8+ 上的 BLE 设备

    我在 Android 8 上使用 BLE 扫描仪 API 中的以下方法 扫描 BLE 信标 startScan List
  • 将 C++ 对象(尤其是 stl 容器)移动到特定的内存位置

    我正在与一个内存管理器合作 有时需要对内存进行碎片整理 基本上 我将浏览内存管理器分配的对象列表并重新定位它们 class A SomeClass data This member is allocated by the special m
  • “索引、关注”或“关注”有什么区别?

    下面的列表有什么区别 首先 你可能知道元机器人 标签 元机器人标签是告诉蜘蛛或爬虫要抓取或索引哪个页面 关注手段 页面将被抓取 没有关注意味着 页面不会被抓取 指数均值 您的页面显示在搜索结果中 无索引意味着 您的页面未显示在
  • Rails 3 SQL 查询选择与连接

    我的选择功能和连接有问题 这是我当前的查询 search Building joins INNER JOIN floors ON floors building id buildings id INNER JOIN spaces ON sp
  • 是否支持内存映射文件作为 uwp 应用程序和 win32 进程之间的 ipc

    官方文档没有正确说明 uwp 是否支持通过内存映射文件的 ipc 我正在研究 uwp 应用程序及其桌面扩展之间的 ipc 场景 虽然我可以使用创建内存映射文件System IO MemoryMappedFiles从 uwp 应用程序code
  • 在打字稿中导出实用函数?

    我正在尝试这样做 伪代码 export const isDefined Function
  • Spring Security 3.1.3 @EnableWebSecurity

    我无法找到 Spring Security 3 1 3 中哪个包包含 EnableWebSecurity 我已经添加了 core config web 和 ldap 安全包 但注释仍然不可用 是否已被其他注释替换 我认为 Spring Se
  • 使用 Blazor 单击提交后清除输入字段

    我想知道是否有人知道如何在按下保存按钮 已提交 后清除所有输入字段 当我返回页面时 我的价值观仍然存在 这是我正在使用的代码 page testform inject BlazorApp6 Data Person person inject
  • 解组单个元素列表失败

    我正在运行一个示例 我再也找不到了 布莱斯 道恩斯博客 http blog bdoughan com在 Glassfish 3 上使用 EclipseLink 2 5 MOXy for JAXB 服务 XmlRootElement XmlA
  • 如何在xsd中引用属性

    我尝试定义一个可以在后续元素定义中引用的属性
  • Python Pika - 消费者进入线程

    我正在开发一个带有后台线程的Python应用程序 用于消费来自RabbitMQ队列的消息 主题场景 我在按钮的 on click 事件上启动线程 这是我的代码 请注意 self receive command def on click st
  • MVC3 中的 CSS 背景图像

    我正在尝试为我的 MVC3 应用程序创建样式表 我不知道如何格式化背景图像 url background image url Content images gradient tile page top png or background i
  • python 错误:“模块”对象没有属性“AF_UNIX”

    这是我的Python代码 if name main import socket sock socket socket socket AF UNIX socket SOCK STREAM sock connect 0 0 0 0 4000 i
  • 重写函数而不删除静态属性

    如果我有一个这样的函数 function a console log a 然后分配一个静态属性 如下所示 a static foo 但是假设我想用另一个函数覆盖该函数 如下所示 var old a a function console lo
  • Spring data mongodb,如何设置SSL?

    到目前为止 我还没有找到关于该主题的良好解释 文档 我在用
  • fwrite 是原子的吗?

    一个简单的问题 我需要在我的程序中添加一些日志记录 如果两个进程在同一文件上使用 fwrite 但不是同一文件描述符 则写入的日志消息将是原子的或混合的 有长度限制吗 是定义了 ANSI C 行为还是定义了实现 如果后者在 MacOSX L
  • 以编程方式添加 SwitchCompat 错误

    我正在尝试添加android support v7 widget SwitchCompat以编程方式 我收到此错误 java lang NullPointerException Attempt to invoke interface met
  • 检查用户输入是否在txt文件中,使用批处理

    我正在为局域网联网计算机批量制作聊天风格的系统 我想检查用户名是否被占用 如果不允许 我如何检查用户在这一行中输入的内容 set p name2 我已经在测试文件中尝试过这个 但无法让它工作 startup set fail set nam