我有一个简单的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
答案 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
下执行时,它会将文本输出到控制台(即在批处理文件中重定向。)