我在将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
答案 0 :(得分:0)
只有双引号才是批处理脚本中的有效引号,而不是单引号。取代
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
在上一次运行中尚未删除,您将获得其他输入对话框。 >
重定向运算符会截断现有文件,修复此问题。