-1

帮助!我正在制作一个批处理文件,您可以制作一个人员列表。然后当有人到达时,你可以输入他们的名字,它会检查他们是否在名单上。当批处理文件检查此人是否在列表中时它不起作用(我没有使用大写字母并且我拼写正确)我需要弄清楚我的批处理文件有什么问题,它不起作用。所以主要问题是当它检查列表中的人时,它没有找到它。对不起,我不完全确定如何表达这一点。:) 这是我的程序的代码。

@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
4

3 回答 3

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
于 2013-02-06T11:51:34.767 回答
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为 for true(它们在列表中)和exit /b 3for false(它们不在) 来将其修改为一个函数。

每个名称都应位于单独的行上,如下所示。/i由于打开了if命令,大写无关紧要。

Mark Finch
Julie Fernz
Tom Riddle...
于 2013-02-06T07:04:13.990 回答
0

我不熟悉语法,但是输入初始名称的方式(例如set /p Name1=Name:)与输入要检查的名称的方式(set /p check1=)之间存在差异。这很重要吗?

于 2013-02-06T01:55:29.987 回答