我不知道我的批处理文件有什么问题

时间:2013-02-06 01:32:19

标签: batch-file

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

@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

3 个答案:

答案 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=)之间存在差异。这有意义吗?