Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBScript与批处理交互_Vbscript_Batch File - Fatal编程技术网

VBScript与批处理交互

VBScript与批处理交互,vbscript,batch-file,Vbscript,Batch File,我正在运行一个批处理脚本,用户必须在某个地方访问数据库 此时,用vbscript创建的窗口将提示用户输入登录名和密码。好的,取消按钮 如果确认后凭证正确,则批处理将根据planA继续,否则批处理将执行其他操作,并转到planB。如果取消,它将返回批次和主菜单 这就是我一直在努力解决的问题: -如何捕获用户信息、验证并返回planA或planB的批处理 正如您所看到的,如果我们消除了&goto计划的内容,脚本就会工作。它将VBS输入传递发送到批处理,批处理回显将从此处继续或执行其他操作,其余代码

我正在运行一个批处理脚本,用户必须在某个地方访问数据库

此时,用vbscript创建的窗口将提示用户输入登录名和密码。好的,取消按钮

如果确认后凭证正确,则批处理将根据planA继续,否则批处理将执行其他操作,并转到planB。如果取消,它将返回批次和主菜单

这就是我一直在努力解决的问题:

-如何捕获用户信息、验证并返回planA或planB的批处理

正如您所看到的,如果我们消除了&goto计划的内容,脚本就会工作。它将VBS输入传递发送到批处理,批处理回显将从此处继续或执行其他操作,其余代码将从此处继续在同一批处理中执行


但是,它不起作用。。。有什么能帮到你的吗

您的主要问题是没有正确设置文件以便于从批处理文件中提取VBS。您的VBS看起来与批次标签一样。您过滤掉了标签标签,但仍然包括:ini、:BATCH等行。显然,这些行会使VBS出错。我解决了这个问题,在VBS前面加了::,并调整了过滤器。没有必要显式过滤掉任何标签。我选择了3个冒号,因为一个冒号用于标签,2个冒号经常用于注释。只需改变前面冒号的数量,就可以在批处理中嵌入多个独立的VBS脚本

我还对代码进行了少量重组,并加入了一些EXIT/B语句,这样代码就不会失败。此外,您的:MAIN未定义,因此我注释掉了GOTO,并将其替换为EXIT/B

@echo off
:Ini
echo   [1] Access database
echo   [2] Main menu
echo:
set /p Quest= What do you prefer (1 / 2)?
if not '%Quest%'=='' set Quest=%Quest:~0,1%
if '%Quest%'=='1' goto VBS
if '%Quest%'=='2' goto BATCH
echo Invalid option, please try again
cls
goto Ini

:BATCH
echo Heading for main menu ...
::goto Main
exit /b

:VBS
:::wscript.echo InputBox("Enter your password","VBScript-Batch")
findstr "^:::" "%~sf0" >temp.vbs
for /f "delims=" %%N in ('cscript //nologo temp.vbs') do set pass=%%N
del temp.vbs
If "%pass%"=="okay" (
  echo Valid Password !
    goto PLAN-A
) else (
  echo Invalid Password !!
    goto PLAN-B
)

:PLAN-A
echo continue from here
exit /b

:PLAN-B
echo do something else
exit /b

您的主要问题是没有正确设置文件以便于从批处理文件中提取VBS。您的VBS看起来与批次标签一样。您过滤掉了标签标签,但仍然包括:ini、:BATCH等行。显然,这些行会使VBS出错。我解决了这个问题,在VBS前面加了::,并调整了过滤器。没有必要显式过滤掉任何标签。我选择了3个冒号,因为一个冒号用于标签,2个冒号经常用于注释。只需改变前面冒号的数量,就可以在批处理中嵌入多个独立的VBS脚本

我还对代码进行了少量重组,并加入了一些EXIT/B语句,这样代码就不会失败。此外,您的:MAIN未定义,因此我注释掉了GOTO,并将其替换为EXIT/B

@echo off
:Ini
echo   [1] Access database
echo   [2] Main menu
echo:
set /p Quest= What do you prefer (1 / 2)?
if not '%Quest%'=='' set Quest=%Quest:~0,1%
if '%Quest%'=='1' goto VBS
if '%Quest%'=='2' goto BATCH
echo Invalid option, please try again
cls
goto Ini

:BATCH
echo Heading for main menu ...
::goto Main
exit /b

:VBS
:::wscript.echo InputBox("Enter your password","VBScript-Batch")
findstr "^:::" "%~sf0" >temp.vbs
for /f "delims=" %%N in ('cscript //nologo temp.vbs') do set pass=%%N
del temp.vbs
If "%pass%"=="okay" (
  echo Valid Password !
    goto PLAN-A
) else (
  echo Invalid Password !!
    goto PLAN-B
)

:PLAN-A
echo continue from here
exit /b

:PLAN-B
echo do something else
exit /b

好啊我现在不能测试你的代码,但我一回到家就会测试它。顺便问一下,你能检查一下我的另一个类似但更酷的链接吗?嗨,我已经测试过了,输入框没有出现。如果选择[1],它会回显无效密码…请执行其他操作。不工作。顺便问一下,你查过我上面的其他链接了吗?Thanks@user1573858 - ??? 我不知道你哪里出错了。这个代码对我来说非常有效。我在第一次提示时输入1,它会给我一个VBS输入框,询问我密码。我输入Ok,进入A计划,其他的进入B计划。我现在不能测试你的代码,但我一回到家就会测试它。顺便问一下,你能检查一下我的另一个类似但更酷的链接吗?嗨,我已经测试过了,输入框没有出现。如果选择[1],它会回显无效密码…请执行其他操作。不工作。顺便问一下,你查过我上面的其他链接了吗?Thanks@user1573858 - ??? 我不知道你哪里出错了。这个代码对我来说非常有效。我在第一次提示时输入1,它会给我一个VBS输入框,询问我密码。我进入,好的,进入A计划,其他的进入B计划。