如何将多个变量从 VBS 传递到批处理脚本?

Posted

技术标签:

【中文标题】如何将多个变量从 VBS 传递到批处理脚本?【英文标题】:How can multiple variable be passed from VBS to batch script? 【发布时间】:2020-05-17 13:14:18 【问题描述】:

我有以下 .bat 文件用于运行一系列作业:

    运行 vbs 脚本来计算前一周的周一和周六日期 运行一系列带有计算日期的命令,以从商业金融应用程序中提取数据 运行 vbs 脚本以加载和运行 Excel 宏

批处理文件的第一部分如下:

echo off
rem Get last weeks Monday-Saturday dates
for /F %%n in ('cscript.exe //nologo GetLastWeek.VBS') do set LastWeek=%%n

GetLastWeek.vbs 如下:

GetThisMonday = DateSerial(Year(Date), Month(Date), Day(Date) - DatePart("w", Date) + 1)
GetThisMonday=DateAdd("d",+1,GetThisMonday)
GetLastMonday=DateAdd("ww",-1,GetThisMonday)
GetLastSaturday=DateAdd("d",+6,GetLastMonday)
wscript.echo GetLastMonday

这可以很好地返回 1 个日期 (GetLastMonday),但我还需要第二个日期 (GetLastSaturday)。

我需要做什么才能将这两个值传回 bat 文件?

谢谢。

【问题讨论】:

之前有人在这里发表了评论,然后由于某种原因将其删除 - 但它让我思考并尝试了一些我以前没有想到的事情。愚蠢的变化似乎适用于我正在寻找的东西: 【参考方案1】:

这是我如何在batch-file 中执行此操作的一个示例:

<!-- :
@Echo Off
For /F "Tokens=1,2Delims=," %%G In ('^""%__AppDir__%cscript.exe" //NoLogo "%~f0?.wsf"^"'
)Do Set "LastMon=%%G"&Set "LastSat=%%H"
Rem Rest of code below here.
Set LastMon
Set LastSat
Pause
Rem No more code below here.
Exit /B
-->
<Job><Script Language="VBScript">
    WScript.Echo(Date-Weekday(Date,vbTuesday)&","&Date-Weekday(Date,vbSunday))
</Script></Job>

【讨论】:

【参考方案2】:

之前有人在这里发表了评论,然后由于某种原因将其删除 - 但它让我思考并尝试了一些我以前没有想到的事情。以下更改似乎适用于我正在寻找的内容:

wscript.echo GetLastMonday & "," & GetLastSaturday

for /f "tokens=1,2 delims=," %%A in ('cscript //nologo lastweek.vbs') do @echo %%A %%B 

【讨论】:

以上是关于如何将多个变量从 VBS 传递到批处理脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在vbs中设置可以在调用批处理脚本中读取的环境变量

VBS从文件读取变量名称和数据

如何将变量从java文件传递到批处理文件?

无法将变量从控制器传递到模型以处理codeigniter中的多个上载字段

批次分数到 %

将变量从 Photoshop 传递到 Python