gpt4 book ai didi

windows - 批处理文件调用 vbs 不会从任务计划程序运行

转载 作者:可可西里 更新时间:2023-11-01 10:44:45 28 4
gpt4 key购买 nike

我在任务调度程序中安排了一个批处理文件。如果我从 CMD 手动运行这个批处理文件,它会很好地完成所有工作,大约需要 20 分钟。但是如果我在任务调度程序中安排它,它会在开始运行时立即完成并显示结果是“成功完成......”(VBS 没有运行......)这个批处理文件将调用 2 个 vbs 脚本来运行。我不确定任务调度程序是否有问题,或者只是批处理文件中的代码有误。

 @echo off

set logfile=c:\temp\Shop_Floor_Schedule.%TIME:~0,2%.log

echo %date% %time% > %logfile%

cscript "c:\work\scripts\Export.vbs" >> %logfile% 2>&1

cscript "c:\work\scripts\Schedule.vbs" >> %logfile% 2>&1

echo "batch complete" >> %logfile%

我在日志文件中得到了错误提示

Fri 06/19/2015 10:00:00.13 
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

starting Excel
opening workbook
c:\work\scripts\Export.vbs(30, 1) Microsoft Excel: Microsoft Excel cannot access the file 'C:\ntfs3\scripts\PRODUCTION.xls'. There are several possible reasons:

The file name or path does not exist.
The file is being used by another program.
The workbook you are trying to save has the same name as a currently open workbook.

我只从任务计划程序中收到此消息,但如果从 cmd 手动运行它,一切都很好。

最佳答案

改掉使用 wscript.echo 和 stdOut vbscript 输出进行日志记录的习惯……这是一种糟糕的做法,会降低您包含解决此类问题的逻辑的能力。

我会建议修复该方法。而不是使用 >> %log% 2>&1... 为日志文件使用 vbscripts 的参数。这是一个简单的解决方案。只需将您的计划任务指向此 vbscript.. 它应该可以解决此批处理文件问题。

const forreading = 1, forwriting = 2, forappending, 8
set fso = CreateObject("Scripting.FileSystemObject")
set shell = WScript.CreateObject ("WScript.shell")
logfile = "C:\temp\Shop_Floor_Schedule" & Hour(now()) & ".Log"

' Start Export.Vbs
'============================================================
Call WriteLog("Starting Export VBScript")
Shell.run "cmd /c cscript c:\work\scripts\Export.vbs >> """ & logfile & """ 2>&1"


' Start Schedule.vbs
'========================================
Call WriteLog("Starting Schedule VBScript")
Shell.run "cmd /c cscript c:\work\scripts\Schedule.vbs >> """ & logfile & """ 2>&1"

'Terminate Objects and exit script
'============================================================
Call WriteLog("Terminating Script")
Set objShell = Nothing
Set fso = nothing

Sub WriteLog(strMessage)
set logf = fso.OpenTextFile(logfile, forappending, true)
strTime = Hour(Now()) & ":" & Minute(Now())
logf.writeline = Date() & " - " & strTime & " " & strMessage
logf.close
set logf = nothing
end sub

关于windows - 批处理文件调用 vbs 不会从任务计划程序运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30939264/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com