我正在尝试使用EXCEL VB SCRIPT调用批处理文件,其参数是存储Excel Cells中值的变量。这是代码。使用我现有的代码,它不会将变量值仅传递给Batch,而是将期望这些参数传递给Batch。
如何将实际变量值传递给Batch?
EXCEL VB代码
jserver = Excel.Worksheets("Data_Sheet").Range("A2").Value
ip = Excel.Worksheets("Data_Sheet").Range("B2").Value
port = Excel.Worksheets("Data_Sheet").Range("D2").Value
user = Excel.Worksheets("Data_Sheet").Range("E2").Value
pass = Excel.Worksheets("Data_Sheet").Range("F2").Value
Call Shell("C:\Package\BIN\account.bat jserver ip port user pass")
MsgBox "J SERVER-->" & jumpserver & Chr(13) & "IP-->" & arip & Chr(13) & "PORT-->" & port & Chr(13) & "USER-->" & aruser & Chr(13) & "PASSWORD-->" & arpass, vbInformation
消息框显示正确的值
批次写得像这样 - >
@echo off
ECHO "CREATING ACCOUNT"
REM DECLARE VARIABLES
set jserver=%1%
set ip=%2%
set port=%3%
set user=%4%
set pwd=%5%
ECHO %jserver%
ECHO %ip%
ECHO %port%
ECHO %user%
ECHO %pwd%
价值印刷:
"CREATING ACCOUNT"
jserver
ip
port
user
pass
答案 0 :(得分:1)
如果要通过连接构建命令,请不要使用wrong,而应使用correct运算符:
>> jserver = "JS"
>> ip = "IP"
>> port = "PORT"
>> user = "USER"
>> pass = "PASS"
>> cmd = "C:\Package\BIN\account.bat " & jserver & " " & ip & " " & port & " " & user & " " & pass
>> WScript.Echo cmd
>>
C:\Package\BIN\account.bat JS IP PORT USER PASS
并且不要从互联网上复制未经测试的代码:
>> cmd = "C:\Package\BIN\account.bat " + jserver + " " ip + " " + " " + port + " " +user + " " + pass
>>
Error Number: 1025
Error Description: Expected end of statement
你是否发现了失踪的&在ip之前?如果没有,开始研究从零件构建字符串的错误较少的方法(加入,替换模板,printf /格式相似的函数)。