我正在努力解决这个看似简单的代码:
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
答案 0 :(得分:1)
... & a & filename
是问题所在。您只需连接参数,而不是用空格分隔它们。这就是为什么批处理文件只能看到同时包含两个的第一个参数。然后,echo %2
会产生ECHO is off.
因为%2
为空。
... & a & " " & filename
应该有效。对于某些工作价值,我猜。如果a
或filename
包含空格,它可能会爆炸。您可以在它们周围添加引号以防止:
... & Chr(34) & a & Chr(34) & " " & Chr(34) & filename & Chr(34)
然而,批处理文件中的%1
和%2
将包含引号。要删除它们,您可以分别使用%~1
和%~2
。