从VBS(用于输入)将参数传递给批处理脚本不工作
问题描述:
我面临着以下问题,同时通过VBS用户输入PARAMATERS到批处理脚本:从VBS(用于输入)将参数传递给批处理脚本不工作
- 用户输入的两个参数要求不止一次用户
- 参数不传递给批处理脚本
这是我的脚本:
@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
答
只有双引号才能在批处理脚本中有效地引用字符,而不是单引号。更换
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
参数应该传递给'name.bat'就好了,但是你的引用是错误的。单引号在批处理脚本中不是有效的引号字符。用双引号替换它们,然后重试。如果它仍然不起作用:显示'name.bat'的内容以及您收到的任何错误消息。 – 2014-12-13 17:19:27
非常感谢Ansgar。它工作正常,但参数要求用户对两个参数的使用次数超过三次。实际上,这两个参数只需要一次用户。请帮我解决这个问题。 – user2376622 2014-12-13 18:46:45
'> usermessage.vbs ...'而不是**第一个**'>> usermessage.vbs ...' – JosefZ 2014-12-13 19:25:57