中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何把VBS的变量返回给BAT[已完结]?
« [1] [2] »
作者:
标题: [求助]如何把VBS的变量返回给BAT[已完结]? 上一主题 | 下一主题
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『楼 主』:  [求助]如何把VBS的变量返回给BAT[已完结]?

我的意图如下:
因为BAT的提示很难看,也不能用鼠标,我现在直接在BAT中写一个VBS来,然后运行VBS,把VBS的变量又传回给BAT,如何写?看下面的代码:
ECHO ON ERROR RESUME NEXT>%TEMP%\MSG.VBS
ECHO DIM blnMS>>%TEMP%\MSG.VBS
ECHO blnMS=MSGBOX("本设置只能在安全模式下进行,要继续吗?",VbYesNo,"小不点提示")>>%TEMP%\MSG.VBS
START ")>>%TEMP%\MSG.VBS

我想把这个YES 和 NO的变量传回给BAT的变量ISMS,如果ISMS=YES则继续操作,否则退出程序。

还存在一个难点:就是BAT调用VBS后还来不及等待用户进行选择就直接运行后面的代码了,能否让用户操作完VBS的内容后再继续执行BAT的内容呢?

[ Last edited by HUNRYBECKY on 2006-12-29 at 09:04 AM ]

2006-12-29 03:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 2 楼』:  

没有人回复,顶下。

2006-12-29 03:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
rochan
初级用户





积分 40
发帖 14
注册 2006-12-27
状态 离线
『第 3 楼』:  

对 VBS 不太懂...有待高手来回答.

不过 要是用 VBS 处理 的话.  就可以用它 判断 YES  NO 就行了..为什么 还要 再传回给 BAT  呢...

2006-12-29 03:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by rochan at 2006-12-29 03:23:
对 VBS 不太懂...有待高手来回答.

不过 要是用 VBS 处理 的话.  就可以用它 判断 YES  NO 就行了..为什么 还要 再传回给 BAT  呢...

因为我对VBS不熟悉,所以一般都使用BAT来编写,但是BAT的选择提示我不想使用SET /P 或SELECT.COM来实现,而改用VBS的MSGBOX来实现,这样就美观多了。

更正一个错误,上面的代码中ECHO DIM blnMS as Boolen>>%TEMP%\MSG.VBS 改为ECHO DIM blnMS>>%TEMP%\MSG.VBS,否则会提示错误

2006-12-29 03:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 5 楼』:  


@ECHO @ECHO 你选择了YES>yes.bat
@ECHO pause<nul>> yes.bat
@ECHO @ECHO 你选择了NO>no.bat
@ECHO pause<nul>> no.bat
@ECHO SET WS=CREATEOBJECT("WSCRIPT.SHELL")>MSG.VBS
@ECHO set fso=createobject("scripting.filesystemobject")>>msg.vbs
@ECHO ON ERROR RESUME NEXT>>MSG.VBS
@ECHO DIM blnMS>>MSG.VBS
@ECHO blnMS=MSGBOX("本设置只能在安全模式下进行,要继续吗?",VbYesNo,"小不点提示")>>MSG.VBS
@ECHO if blnMS=vbyes then>>MSG.VBS
@ECHO WS.RUN "YES.BAT",,true>>MSG.VBS
@ECHO ELSE>>MSG.VBS
@ECHO WS.RUN "NO.BAT",,true>>MSG.VBS
@ECHO END IF>>MSG.VBS
@ECHO fso.deletefile ("yes.bat")>>msg.vbs
@ECHO fso.deletefile ("no.bat")>>msg.vbs
@ECHO fso.deletefile ("msg.vbs")>>msg.vbs
start MSG.VBS


2006-12-29 03:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by jmz573515 at 2006-12-29 03:44:
[CODE]
@ECHO @ECHO 你选择了YES>yes.bat
@ECHO pause<nul>> yes.bat
@ECHO @ECHO 你选择了NO>no.bat
@ECHO pause<nul>> no.bat
@ECHO SET WS=CREATEOBJECT("WSCRIPT. ...

谢谢jmz573515兄的回复,你是通过VBS写一个YES.BAT或no.bat文件,然后通过这个文件来判断,方式是可以行,但能不能直接把VBS的变量返回给BAT呢?这样就不用产生临时文件了。

2006-12-29 03:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 7 楼』:  

参数

2006-12-29 04:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by electronixtar at 2006-12-29 04:34:
参数

E兄能否说明白点,兄弟实在是外行。

2006-12-29 04:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 9 楼』:  

还存在一个难点:就是BAT调用VBS后还来不及等待用户进行选择就直接运行后面的代码了,能否让用户操作完VBS的内容后再继续执行BAT的内容呢?

2006-12-29 04:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 10 楼』:  

这个好像是要用start /w

2006-12-29 04:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 11 楼』:  


@echo off
>%Temp%\msg.vbs echo intAnswer = MsgBox("没本设置只能在安全模式下进行,要继续吗? ", vbExclamation + vbYesNo, "小不点提示!")
>>%Temp%\msg.vbs echo     If intAnswer = vbYes Then
>>%Temp%\msg.vbs echo Wscript.Echo "Yes"
>>%Temp%\msg.vbs echo end if
>>%Temp%\msg.vbs echo     If intAnswer = vbNo Then
>>%Temp%\msg.vbs echo Wscript.Echo "No"
>>%Temp%\msg.vbs echo end if
for /f "delims=" %%i in ('"cscript //nologo %Temp%\msg.vbs"') do echo goto %%i
pause
[ Last edited by zh159 on 2006-12-28 at 04:02 PM ]

2006-12-29 05:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 12 楼』:  

谢谢zh159兄,你自己想了好久终于测试成功,等我回来正准备贴上我的代码时发现你已经抢先一步了,还是谢谢你,下面是我的代码。
@ECHO SET WS=CREATEOBJECT("WSCRIPT.SHELL")>MSG.VBS
@ECHO ON ERROR RESUME NEXT>>MSG.VBS
@ECHO DIM blnMS>>MSG.VBS
@ECHO blnMS=MSGBOX("本设置只能在安全模式下进行,要继续吗?",VbYesNo,"小不点提示")>>MSG.VBS
@ECHO Wscript.Echo blnMS>>MSG.VBS
for /f "skip=2" %%i in ('"cscript MSG.VBS"') do (
  set "ISMS=%%i"
)
  ECHO %ISMS%
  PAUSE

2006-12-29 05:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 13 楼』:  

这是三个按键的(是、否、取消)
@echo off
>%Temp%\msg.vbs echo intAnswer = MsgBox("没本设置只能在安全模式下进行,要继续吗? ", vbExclamation + vbYesNoCancel, "小不点提示!")
>>%Temp%\msg.vbs echo     If intAnswer = vbYes Then
>>%Temp%\msg.vbs echo Wscript.Echo "ISMS=Yes"
>>%Temp%\msg.vbs echo end if
>>%Temp%\msg.vbs echo     If intAnswer = vbNo Then
>>%Temp%\msg.vbs echo Wscript.Echo "ISMS=No"
>>%Temp%\msg.vbs echo end if
>>%Temp%\msg.vbs echo     If intAnswer = vbCancel Then
>>%Temp%\msg.vbs echo Wscript.Echo "ISMS=Cancel"
>>%Temp%\msg.vbs echo end if
for /f "delims=" %%i in ('"cscript //nologo %Temp%\msg.vbs"') do echo set “%%i”
pause


2006-12-29 05:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 14 楼』:  

再次谢谢zh159兄,你的代码比我的那个好用,我是东拼西揍出来的,顺便问下,如何检测系统目前是否是安全模式?

2006-12-29 05:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 15 楼』:  

ECHO ON ERROR RESUME NEXT>MSG.VBS
ECHO SET FSO=CreateObject("Scripting.FileSystemObject")>>MSG.VBS
ECHO DIM blnMS>>MSG.VBS
ECHO blnMS=MSGBOX("本设置只能在安全模式下进行,要继续吗?",VbYesNo,"小不点提示")>>MSG.VBS
ECHO If blnMS=vbYes Then>>MSG.VBS
ECHO MSGBOX "OK">>MSG.VBS
ECHO Else f=fso.DeleteFile(WScript.ScriptName)>>MSG.VBS
ECHO End If>>MSG.VBS
start /w msg.vbs
if not exist msg.vbs goto end
echo abcde
:end
pause

2006-12-29 06:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: