将变量从VB传递到批处理文件

时间:2014-07-25 21:40:43

标签: batch-file vbscript

我正在努力解决这个看似简单的代码:

a = objNode.Text


dim WshShell


set WshShell=Wscript.Createobject("Wscript.shell")


 WshShell.Run chr(34) & "C:\Users\c1921\Ayla_Data\ccode.bat " & Chr(34) & a & filename 'this line here does not work right.


 Set WshShell = Nothing

代码几乎完全符合我的要求。这是批处理文件代码:

@echo off 

echo test passed variables:

echo %1 

echo %2

pause

但是echo%1返回两个值,echo%2返回echo off:

219270AC000N000009132
ECHO OFF

我不明白我做错了什么。我试过在这一行添加额外的引号:

WshShell.Run ""C:\Users\c1921\Ayla_Data\ccode.bat "" a & filename 'variation 1

WshShell.Run """C:\Users\c1921\Ayla_Data\ccode.bat """ a & filename 'variation 2

WshShell.Run chr(34) & "C:\Users\c1921\Ayla_Data\ccode.bat " & Chr(34) & a + filename 'variation 3

我不明白我在这里缺少什么? 任何正确方向的帮助都会很棒。如果有任何关于使用vbs和批处理的有用文档也很棒。

DM

1 个答案:

答案 0 :(得分:1)

... & a & filename

是问题所在。您只需连接参数,而不是用空格分隔它们。这就是为什么批处理文件只能看到同时包含两个的第一个参数。然后,echo %2会产生ECHO is off.因为%2为空。

... & a & " " & filename

应该有效。对于某些工作价值,我猜。如果afilename包含空格,它可能会爆炸。您可以在它们周围添加引号以防止:

... & Chr(34) & a & Chr(34) & " " & Chr(34) & filename & Chr(34)

然而,批处理文件中的%1%2将包含引号。要删除它们,您可以分别使用%~1%~2