gpt4 book ai didi

windows - 如何检查输入是否已在列表中-批处理

转载 作者:行者123 更新时间:2023-12-03 11:09:32 30 4
gpt4 key购买 nike

在Windows Batch中执行此操作。我有一个名称列表,并要求用户输入其名称。
我想检查该名称是否已经存在于列表中,如果存在,则直接进入goto,否则它将名称添加到列表中。

@echo off
set "list=Bob,Steve,Harry"

set /p "name=What is your name?"
for /f "tokens=3 delims=," %%i in ("%list%") do (
if %%i=="%name%" (
goto nameInList
)
)
set "list=%list%,%name%"

:nameInList
... some code here ...

我四处张望,仅发现如何比较文件中是否包含字符串,这是我获取并编辑了 for /f "tokens=3 delims=," %%i in (%list%) do的文件,但它仍然尝试查找文件“列表”。

先感谢您。

最佳答案

我不确定更新列表是什么意思。如果要永久更新批处理文件本身中的列表,则需要对此进行清除,以便我可以更新答案。现在,我假设您只想临时更新list变量:

@echo off
set "list=Bob,Steve,Harry"
set /p name=Enter your name:
echo %list% |findstr /i "\<%name%\>" >nul 2>&1
if %errorlevel% equ 1 goto add
echo %name% already in list
goto :eof
:add
set "list=%list%,%name%"
echo %list%

但是,您也可以将所有名称添加到单独的文件中。例如:

names.txt
Bob
Steve
Harry

然后批处理文件:
@echo off
set /p "name=Enter your name: "
for /f "delims=" %%i in ('type names.txt ^| findstr /i "\<%name%\>"') do if /i "%%~i"=="%name%" (
echo %name% already in list && goto :eof
)
:add
echo %name%>>names.txt
echo %name% added to names.txt && set name=

这将测试 names.txt内的名称列表中的每个值,如果找不到匹配项,它将把名称附加到文件中。

关于windows - 如何检查输入是否已在列表中-批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58652567/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com