批量使用带有IF条件的CALL命令

时间:2013-01-31 17:57:21

标签: batch-file conditional call

我正在尝试使用密码设置代码,其中不同的密码会将您带到另一个目录。所有目录都在同一个.bat文件中,但我想使用另一个.bat来调用密码并带我到目录。我不知道该怎么做,而且发现很难找到主题搜索。

我的代码如下所示:

@echo off
:takemeto
cls
echo Enter Password
set /p name=
call C:\Users\Username\Desktop\Batch files\passwords.bat

:password1
cls
echo You have chosen Password 1

:password2
cls
echo You have chosen Password 2

CALL用于查找和使用我的文件和密码。这些文件有密码和目录,如下所示:

:Passwords
if "%name%" == "password1" goto password1
if "%name%" == "password2" goto password2
/end

希望这很清楚, 感谢-罗布

1 个答案:

答案 0 :(得分:0)

让外部批处理脚本回显其输出。使用for /f循环捕获它。

@echo off
setlocal
set extbat=C:\Users\Username\Desktop\Batch files\passwords.bat

:takemeto
cls
set /p name="Enter Password: "
for /f %%I in ('"%extbat%" %name%') do goto %%I

:invalid
echo Invalid password entered.
set name=
pause
goto takemeto

:password1
cls
echo You have chosen Password 1
goto :EOF

:password2
cls
echo You have chosen Password 2
goto :EOF

示例C:\Users\Username\Desktop\Batch files\passwords.bat

@echo off
if #%1==# (
    echo takemeto
) else if #%1==#correct1 (
    echo password1
) else if #%1==#correct2 (
    echo password2
) else echo invalid

...其中correct1correct2是您希望用户输入的密码。