2014-06-20 63 views
0

使用一个VBScript(只是一个例子)像我需要使用VBScript来控制一个命令行程序

result = MsgBox ("Would you like to install the AntrixAPI?", vbYesNo, "Installing AntrixAPI") 

Select Case result 
Case vbYes 
MsgBox("The API will be installed.") 
Case vbNo 
MsgBox("The API will not be install.") 
End Select 

我怎么能使用它来控制一个命令行程序帮助。假设用户选择了是。那么只有当用户选择是时,命令才会到达某个点。 (示例命令)

@echo off 
:UserSelectedYes 
REM This is where the prompt would go if the user selected yes 
wget http://www.example.com/thisisafakedomain/api/antrix 
:UserSelectedNo 
REM This is where the prompt would go if the user selected no 
end 

这可能吗?

+0

您可以试试[this](http://stackoverflow.com/a/21575421/2861476) –

+0

这正是我想要的。 100%谢谢SOOO很多 – SmokingNumbers

+0

可能的重复[将vbYesNoCancel的输出传递到批处理中](http://stackoverflow.com/questions/21574341/passing-the-output-of-vbyesnocancel-into-a-batch) –

回答

0

你可以创建一个MS-DOS进程并执行每个脚本,你想!

就像这样:

Dim oProcess As New Process 
With (oProcess.StartInfo) 
    .Arguments = "/k <command> & <command> & <command> & exit" 
    .FileName = "cmd.exe" 
    .WindowStyle = ProcessWindowStyle.Hidden 
    .CreateNoWindow = True 
End With 
oProcess.Start() 

它不是最好的,genteelst方式,但最快的。 我不知道,如果这是你想要的。因此,请随时重新定义您的问题,但您不清楚您要求的是什么!

+0

这是我想要的。比方说,我有一个MS-DOS命令,它调用一个'script.vbs'文件。该文件提示用户是否/否框。如果用户选择'yes'选项,那么'script.vbs'将会转到与'script.vbs'相同的.bat/.cmd程序,并且将转到某个标签并且只运行该标签。 – SmokingNumbers

+0

哦,你想用vbs? (我以为你的意思是VB)这是一个问题,因为,vbs无法使用Process类。那么,你的问题变得更加复杂。你为什么不问问用户,他在你的* .bat脚本中想要什么? – Cydhra

+0

我已经考虑过这样做了(这将会非常复杂),但.vbs脚本更方便用户使用。 – SmokingNumbers

0

你的VBScript可以如此简单:从您的批处理文件

WScript.Quit MsgBox("Would you like to install the AntrixAPI?", vbYesNo, "Installing AntrixAPI") 

调用它,并且测试返回值。 vbYes具有值6,vbNo有7

@echo off 
cscript c:\test.vbs 

if %errorlevel%==6 goto UserSelectedYes 
if %errorlevel%==7 goto UserSelectedNo 
+0

目前正在进行此测试。我会看看它是如何发展。 编辑:使用它,它打开了一个CMD窗口(在正确的目录中),但它不执行我在标签下设置的命令。它只是打开CMD窗口,等待用户输入一个命令 – SmokingNumbers

+0

我已经把这个放在'call test.vbs'中,我有它,它会给我一些错误,然后打开另一个CMD窗口等待用户执行一个命令。 – SmokingNumbers

+0

您是否试图返回到您的原始批处理文件?或者启动一个新的? – Bond

0

值这是怎么下载文件在VBScript。

On Error Resume Next 
Set File = WScript.CreateObject("Microsoft.XMLHTTP") 
File.Open "GET", "http://www.pepperresources.org/LinkClick.aspx?fileticket=B1doLYYSaeY=&tabid=61", False 
'This is IE 8 headers 
File.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; BCD2000; BCD2000)" 
File.Send 
If err.number <> 0 then 
    line ="" 
    Line = Line & vbcrlf & "" 
    Line = Line & vbcrlf & "Error getting file" 
    Line = Line & vbcrlf & "==================" 
    Line = Line & vbcrlf & "" 
    Line = Line & vbcrlf & "Error " & err.number & "(0x" & hex(err.number) & ") " & err.description 
    Line = Line & vbcrlf & "Source " & err.source 
    Line = Line & vbcrlf & "" 
    Line = Line & vbcrlf & "HTTP Error " & File.Status & " " & File.StatusText 
    Line = Line & vbcrlf & File.getAllResponseHeaders 
    wscript.echo Line 
    Err.clear 
    wscript.quit 
End If 

On Error Goto 0 

Set BS = CreateObject("ADODB.Stream") 
BS.type = 1 
BS.open 
BS.Write File.ResponseBody 
BS.SaveToFile "c:\users\test.txt", 2 
+0

这不是我想要的。由于弹出框,我只希望使用VBS提示用户。我真的希望在CMD窗口中完成所有的功能。 – SmokingNumbers

+0

'选择/ c yn/m“安装ABC”''如果errorlevel 1 wget“http:// etc”''如果errorlevel 2转到:eof' – phd443322

相关问题