从VBS(用于输入)将参数传递给批处理脚本不工作

问题描述:

我面临着以下问题,同时通过VBS用户输入PARAMATERS到批处理脚本:从VBS(用于输入)将参数传递给批处理脚本不工作

  1. 用户输入的两个参数要求不止一次用户
  2. 参数不传递给批处理脚本

这是我的脚本:

@echo off 
setlocal EnableDelayedExpansion 

>>usermessage.vbs ECHO WScript.Echo InputBox("From_date", "para1", "DD-MMM-YYYY") 
>>usermessage.vbs ECHO WScript.Echo InputBox("To_date", "para2", "DD-MMM-YYYY") 

set i=0 

FOR /F "tokens=*" %%A IN ('CSCRIPT.EXE //NoLogo usermessage.vbs') DO (
    set /A i+=1 
    SET para!i!=%%A 
) 

ECHO para1= %para1% 
ECHO para2= %para2% 

call path\name.bat '%para1%' '%para2% 23:59:59' 

DEL usermessage.vbs 

exit 
+0

参数应该传递给'name.bat'就好了,但是你的引用是错误的。单引号在批处理脚本中不是有效的引号字符。用双引号替换它们,然后重试。如果它仍然不起作用:显示'name.bat'的内容以及您收到的任何错误消息。 – 2014-12-13 17:19:27

+0

非常感谢Ansgar。它工作正常,但参数要求用户对两个参数的使用次数超过三次。实际上,这两个参数只需要一次用户。请帮我解决这个问题。 – user2376622 2014-12-13 18:46:45

+2

'> usermessage.vbs ...'而不是**第一个**'>> usermessage.vbs ...' – JosefZ 2014-12-13 19:25:57

只有双引号才能在批处理脚本中有效地引用字符,而不是单引号。更换

call path\name.bat '%para1%' '%para2% 23:59:59' 

call path\name.bat "%para1%" "%para2% 23:59:59" 

正如你所期望的参数应该传递。

它也可能改变这种一个好主意:

>>usermessage.vbs ECHO WScript.Echo InputBox("From_date", "para1", "DD-MMM-YYYY") 
>>usermessage.vbs ECHO WScript.Echo InputBox("To_date", "para2", "DD-MMM-YYYY") 

到这一点:

>usermessage.vbs ECHO WScript.Echo InputBox("From_date", "para1", "DD-MMM-YYYY") 
>>usermessage.vbs ECHO WScript.Echo InputBox("To_date", "para2", "DD-MMM-YYYY") 

因为>>重定向操作符追加到已经存在的文件,而不是替换它。如果由于某种原因usermessage.vbs在上次运行中未被删除,您将获得其他输入对话框。 >重定向操作符会截断已存在的文件,解决此问题。

+0

非常感谢Ansgar帮助我关闭了所有脚本问题。 – user2376622 2014-12-13 21:11:09