帮助!我正在创建一个批处理文件,您可以列出人员列表。然后,当有人到达时,您可以输入他们的姓名,并检查他们是否在列表中。当批处理文件检查该人是否在列表中时它不起作用(我没有使用大写字母,我拼写正确)我需要弄清楚我的批处理文件有什么问题。 所以主要问题是,当它检查列表中的人时,它找不到它。对不起,我不确定如何用这句话。 :) 这是我的程序的代码。
@echo off
title Event Starter
echo Event Starter
set /p Eventname=Event Name:
cls
goto :Participants
:Participants
title Name Of Participants
set /p Name1=Name:
cls
set /p Name2=Name:
cls
set /p Name3=Name:
cls
set /p Name4=Name:
cls
set /p Name5=Name:
cls
set /p Name6=Name:
cls
set /p Name7=Name:
cls
set /p Name8=Name:
cls
pause
goto :checker
:checker
title Enter Person's Name
echo Enter Who Arrived To Check The Database
echo.
echo.
echo.
set /p check1=
goto :database
:database
title Checking Database For The Given Person
echo Checking Database For The Given Person
cls
echo 5 %
ping 1.1.1.1 -n 1 -w 5000 > nul
cls
echo 20 %
ping 1.1.1.1 -n 1 -w 5000 > nul
cls
echo 35 %
ping 1.1.1.1 -n 1 -w 5000 > nul
cls
echo 50 %
ping 1.1.1.1 -n 1 -w 5000 > nul
cls
echo 70 %
ping 1.1.1.1 -n 1 -w 5000 > nul
cls
echo 85 %
ping 1.1.1.1 -n 1 -w 5000 > nul
cls
echo 100 %
ping 1.1.1.1 -n 1 -w 5000 > nul
if %check1%==%Name1% goto :valid
if %check1%==%Name2% goto :valid
if %check1%==%Name3% goto :valid
if %check1%==%Name4% goto :valid
if %check1%==%Name5% goto :valid
if %check1%==%Name6% goto :valid
if %check1%==%Name7% goto :valid
if %check1%==%Name8% goto :valid
goto :invalid
:valid
title %check% Is On The List!
echo %check% Is On The List!
ping 1.1.1.1 -n 1 -w 5000 > nul
ping 1.1.1.1 -n 1 -w 5000 > nul
pause
goto :checker
:invalid
title %check% Is Not On The List!
echo %check% is Not On The List!
echo This Is Case-Sensative
ping 1.1.1.1 -n 1 -w 5000 > nul
ping 1.1.1.1 -n 1 -w 5000 > nul
goto :checker
答案 0 :(得分:1)
- EDIT-- 修正了代码。它现在应该工作。
setlocal enabledelayedexpansion
:a
cls
set/p name=Name:
for /f "delims=" %%i in (File_path) do (
set name2=%%i
if /i !name! equ !name2! goto b
)
cls
echo They're not on the list...
pause
goto a
:b
cls
echo They're on the list...
pause
goto a
如果用户定义的名称(name
)在其中,脚本将检查文件。如果是,则将其发送给:b
,并向您报告说它们在列表中。您可以将goto
命令替换为exit /b 2
,将exit /b 3
命令替换为true(它们在列表中),将/i
替换为false(它们不是),可以将其修改为函数。
每个名称都应该在一个单独的行上,如下所示。由于if
命令的Mark Finch
Julie Fernz
Tom Riddle...
开关,大写无关紧要。
{{1}}
答案 1 :(得分:1)
老实说,那里有很多不必要的行,所以我没有找到错误,而是将脚本重写为更清晰的版本,这应该有希望解决你遇到的问题! :)
@echo off
title Event Starter
setlocal enabledelayedexpansion
echo Event Starter
set /p Eventname=Event Name:
cls
title Name Of Participants
for /l %%a in (1,1,8) do (
set /p Name[%%a]=Name:
cls
)
:checker
title Enter Person's Name
echo Enter Who Arrived To Check The Database
echo.
echo.
echo.
set /p check1=
title Checking Database For The Given Person
echo Checking Database For The Given Person
cls
for %%b in (5,20,35,50,70,85,100) do (
echo %percent%%
ping 1.1.1.1 -n 6 > nul
cls
)
for /l %%a in (1,1,8) do (
if !check1!==!Name[%%a]! goto :valid
)
goto :invalid
:valid
title %check% Is On The List!
echo %check% Is On The List!
ping 1.1.1.1 -n 1 -w 10000 > nul
goto :checker
:invalid
title %check% Is Not On The List!
echo %check% is Not On The List!
echo This Is Case-Sensative
ping 1.1.1.1 -n 1 -w 10000 > nul
goto :checker
答案 2 :(得分:0)
我不熟悉语法,但输入初始名称的方式(例如set /p Name1=Name:
)与输入要检查的名称(set /p check1=
)之间存在差异。这有意义吗?