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

Batch file VB脚本(VBS)每次出现时都将消息添加到日志文件中,batch-file,vbscript,cmd,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 &

我有一个简单的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
.vbs
文件

选项显式
Dim消息文本
如果WScript.Arguments.Count>0,则
messageText=WScript.Arguments.Item(0)&“&DateAdd(“n”,1,Now())
MsgBox messageText,16
WScript.StdOut.WriteLine消息文本
如果结束
内部
.bat
文件

>“logFile.log”cscript//nologo n:\xxx\xxx\xxx.vbs“xxx就绪!!”
也就是说,使
.vbs
文件不仅显示消息框,还将文本写入控制台。在批处理文件
cscript
中,执行被重定向,因此其输出将附加到日志文件中

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

.vbs
文件

选项显式
Dim消息文本
如果WScript.Arguments.Count>0,则
messageText=WScript.Arguments.Item(0)&“&DateAdd(“n”,1,Now())
Echo messageText
如果结束
内部
.bat
文件

>“logFile.log”cscript//nologo n:\xxx\xxx\xxx.vbs“xxx就绪!!”
wscript n:\xxx\xxx\xxx.vbs“xxx准备就绪!!”
当在
wscript.exe
下执行
.vbs
文件时,
wscript.Echo
方法会显示一个消息框,但在
cscript.exe
下执行时,它会将文本输出到控制台(在批处理文件中重定向)。

.vbs
文件

选项显式
Dim消息文本
如果WScript.Arguments.Count>0,则
messageText=WScript.Arguments.Item(0)&“&DateAdd(“n”,1,Now())
MsgBox messageText,16
WScript.StdOut.WriteLine消息文本
如果结束
内部
.bat
文件

>“logFile.log”cscript//nologo n:\xxx\xxx\xxx.vbs“xxx就绪!!”
也就是说,使
.vbs
文件不仅显示消息框,还将文本写入控制台。在批处理文件
cscript
中,执行被重定向,因此其输出将附加到日志文件中

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

.vbs
文件

选项显式
Dim消息文本
如果WScript.Arguments.Count>0,则
messageText=WScript.Arguments.Item(0)&“&DateAdd(“n”,1,Now())
Echo messageText
如果结束
内部
.bat
文件

>“logFile.log”cscript//nologo n:\xxx\xxx\xxx.vbs“xxx就绪!!”
wscript n:\xxx\xxx\xxx.vbs“xxx准备就绪!!”

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

将在何处创建LogFile.log?@MRSample,其中您指出,
>“x:\somewhere\file.log”
表示绝对路径,
>>“\file.log”
表示相对于当前active directory的路径,
>”%~dp0\file.log“
对于存储批处理文件的文件夹。。。你决定你为什么在你的
Dim
s下缩进你的陈述?这太刺耳了。@Lankymart,这只是一个习惯,从视觉上区分声明和使用声明元素的代码。我还热衷于对大多数声明使用javascript的lowerCamelCase命名。我知道我不遵循VBScript惯例,但对我来说,阅读和遵循带有独立声明和命名的代码要比让变量从VBScript语言元素中脱颖而出更容易。@Lankymart,
jarring
。我第一次看到它,谢谢,我的词汇表中还有一个。LogFile.log将创建在哪里?@MRSample,其中您指出,
>“x:\somewhere\file.log”
表示绝对路径,
>“\file.log”
表示相对于当前active directory的路径,
>“%~dp0\file.log”
表示存储批处理文件的文件夹。。。你决定你为什么在你的
Dim
s下缩进你的陈述?这太刺耳了。@Lankymart,这只是一个习惯,从视觉上区分声明和使用声明元素的代码。我还热衷于对大多数声明使用javascript的lowerCamelCase命名。我知道我不遵循VBScript惯例,但对我来说,阅读和遵循带有独立声明和命名的代码要比让变量从VBScript语言元素中脱颖而出更容易。@Lankymart,
jarring
。我第一次看到它,谢谢你,我的词汇量又增加了一个。