VB脚本(VBS)每次出现时都会将消息添加到日志文件中

时间:2017-03-17 11:41:56

标签: batch-file vbscript cmd

我有一个简单的vbs脚本,显示该文件被上传:

Set objArgs = WScript.Arguments
messageText = objArgs(0)
SDateTime = WeekdayName(Weekday(Date)) & ", " & MonthName(Month(Date()), False) & " " & Day(Date ()) & ", " & Year(Date())
MsgBox messageText & (DateAdd("n",1,Now())), 16

我正在寻找的是信息框中的信息:

MsgBox messageText & (DateAdd("n",1,Now())), 16

将附加到日志文件,因此我可以回来检查每个文件的上传时间。

这是BAT文件。

@echo off
:loop
set "datafolder=xxx"
set "tempdatafolder=%temp%\tempdata"
set switches=/r:0 /w:0 /mir /ns /nc /ndl /np /njh /njs


robocopy %switches% "%datafolder%" "%tempdatafolder%"

if exist "%datafolder%\*xxx*.xlsx" (
cscript n:\xxx\xxx\xxx.vbs "xxx READY!!  "
echo XXX IS READY FOR PROSECCING
EXIT
) else (
timeout 5
goto :loop
)

goto :loop

1 个答案:

答案 0 :(得分:4)

.vbs档案

Option Explicit 

Dim messageText
    If WScript.Arguments.Count > 0 Then 
        messageText = WScript.Arguments.Item(0) & " " & DateAdd("n", 1, Now())
        MsgBox messageText, 16
        WScript.StdOut.WriteLine messageText 
    End If 

.bat文件内

>>"logFile.log" cscript //nologo n:\xxx\xxx\xxx.vbs "xxx READY!!  "

也就是说,使.vbs文件不仅显示消息框,还将文本写入控制台。内部批处理文件cscript执行被重定向,因此其输出将附加到日志文件中。

另一个(不是更好)选项(如果没有对话框图标可以存活)是更改输出方法并调用.vbs脚本两次。所以

.vbs档案

Option Explicit 

Dim messageText
    If WScript.Arguments.Count > 0 Then 
        messageText = WScript.Arguments.Item(0) & " " & DateAdd("n", 1, Now())
        WScript.Echo messageText
    End If 

.bat文件内

>>"logFile.log" cscript //nologo n:\xxx\xxx\xxx.vbs "xxx READY!!  "    
wscript n:\xxx\xxx\xxx.vbs "xxx READY!!  "

.vbs文件在wscript.exe下执行时,WScript.Echo方法显示一个消息框,但在cscript.exe下执行时,它会将文本输出到控制台(即在批处理文件中重定向。)