2

在我的批处理文件中,我调用了一个 VBScript 并向它传递了 3 个参数。参数为“IPADDRESS”“PicName”和“Storage”,如下图:

批处理文件:

        set Pathname="C:\User\username\locationOfFile 
        cd /d %Pathname%
        cscript.exe C:\User\username\locationOfFile\myScript.vbs IPADDRESS PicName Storage

在我的 VB6 程序中,定义了参数值。

比如说 IPADDRESS = "170.190.xxx.xxx"

有没有办法可以读取批处理文件并根据 VB6 表单中的声明使用 IPADDRESS 的值?变量 IPADDRESS、PicName 和 Storage 将根据 VB6 程序与之交谈的外部应用程序不断变化,因此我无法在批处理中静态设置它( ....\myScript.vbs 170.190.xxx.xxx pic1 C:\贮存)

我的 VBScript 如下:

   Option explicit

   if WScript.Arguments.Count <> 3 then
      WScript.Echo "Missing parameters"
   else

   Dim imageMagick
   Set imageMagick = CreateObject("ImageMagickObject.MagickImage.1")

   Dim cam_add 
   Dim annotate 
   Dim filename 
   Dim cmd
   Dim WshShell
   Dim return

   cam_add = """http://" & WScript.Arguments(0) &"/image"""
   annotate = """" & WScript.Arguments(1) & " - """ '& Date
   filename = """" & WScript.Arguments(2) & WScript.Arguments(1) & ".jpg"""
   cmd = "convert " & cam_add & " -fill gold -pointsize 45 -gravity southwest -annotate         0x0+25+25 " & annotate & " -trim +repage -verbose " & filename

   WScript.Echo cmd

   Set WshShell = WScript.CreateObject("WScript.Shell")

   WshShell.CurrentDirectory = "C:\Program Files\ImageMagick-6.8.0-Q16\"

   return = WshShell.Run(cmd) 


   end if

总之,我需要像这样设置批处理:

cscript.exe C:\User\username\locationOfFile\myScript.vbs IPADDRESS PicName 存储

所以参数值可以根据我的 VB6 表单中的设置来使用。

4

2 回答 2

2

如果您要:

shell "the.bat " & IPADDRESS & " " & PicName & " " & Storage

然后在the.bat每个空格分隔的参数中都可以通过%NwhereN是序数获得;so%1将包含 的值IPADDRESS%2将包含PicName' 的值,依此类推。

然后转发到 VBScript:

cscript.exe C:\User\username\locationOfFile\myScript.vbs %1 %2 %3

(如果任何变量包含空格,您需要在传递给 bat 文件之前“引用”它们)

(您也可以只chdir(..)在 VB6 中直接运行 CScript)

于 2012-12-20T13:14:38.117 回答
1

对于这么简单的事情,无论如何都不需要批处理文件。毕竟,您有一个完整的脚本可以使用。

您甚至可以从里面设置 CD,或者在 VB6 程序中设置它,如下所示:

Option Explicit

Private Sub Main()
    Dim CD As String
    Dim IPADDRESS  As String
    Dim PicName As String
    Dim Storage As String
    Dim OrigCD As String

    CD = "D:\Photo Archives"
    IPADDRESS = "127.0.0.1"
    PicName = "Fudd"
    Storage = "C:\Storage"

    'Cache CD so we can restore it.
    'Change CD and drive so it is inherited.
    OrigCD = CurDir$()
    ChDir CD
    ChDrive CD

    Shell "cscript """ _
        & App.Path & "\test.vbs "" """ _
        & IPADDRESS & """ """ _
        & PicName & """ """ _
        & Storage & """", _
          vbNormalFocus

    'Restore CD and drive.
    ChDir OrigCD
    ChDrive OrigCD

    'Rest of program.
End Sub

脚本示例:

Option Explicit

Private CD

Private Sub Msg(ByVal Text)
    With WScript
        .StdOut.WriteLine Text
        .StdOut.Write "Press ENTER to continue..."
        .StdIn.ReadLine
    End With
End Sub

If WScript.Arguments.Count <> 3 Then
    Msg "Missing parameters"
    WScript.Quit
End If

'Show the CD and the arguments.
With CreateObject("WScript.Shell")
    CD = .CurrentDirectory
End With
With WScript.Arguments
    Msg CD & vbNewLine _
      & """" & .Item(0) _
      & """ """ & .Item(1) _
      & """ """ & .Item(2) & """"
End With

但它甚至看起来都不需要脚本。您可以从 VB6 程序内部构建命令、设置 CD/驱动器和 Shell() 构建的命令字符串。

于 2012-12-21T00:41:04.217 回答