当前位置: 首页 > 知识库问答 >
问题:

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

祁飞飙
2023-03-14

我在任务计划程序中计划了一个批处理文件。如果我从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手动运行,一切都很好。

共有1个答案

龚德本
2023-03-14

摆脱使用wscript.echo记录日志的习惯

我推荐这种修复方法。而不是使用

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
 类似资料:
  • 我有一个批处理文件,其中包含以下代码以停止和启动SQL报告服务: 我已经设置了每天运行的计划任务,它目前以SYSTEM的形式运行,并设置了最高权限。我在操作上设置了文件夹中的开始选项,通常一切似乎都设置正确。但是当我运行任务时,似乎什么都没有发生,它说任务已经运行,但我看不到服务已经按预期重新启动。 有人能告诉我我错过了什么吗?

  • 我从昨天开始就在努力解决这个问题,我创建了一个批处理文件——一个简单的文件——它将尝试读取windows计划任务的日志,并基于对正确的“最后结果”的搜索将0或1记录到日志文件中。批处理文件运行良好。但是我想安排这个批处理文件每两分钟运行一次, 所以我创建了一个运行此批处理文件的计划任务;当我强制启动计划任务时,我在任务调度程序历史记录中没有看到任何错误,但同时我的Batch文件没有被执行。 我尝试

  • 从任务计划程序运行批处理文件不适用于. bat文件中的java命令。如果我手动运行. bat文件,它的工作良好。 这是我试图安排的简单. bat文件

  • 我有一个包含4个命令的批处理脚本,如下所示 当我双击批处理文件时,它运行得很好。当我尝试从命令提示符运行批处理文件时,它没有看到要删除的. csv文件,我不确定这是为什么,但我认为这对我的目的并不重要。 当我从task scheduler手动运行任务时,它会截断数据库中的表并删除现有的csv文件,但没有创建新文件,这使我相信它会卡在.vbs文件上。 我试着用。vbs脚本,并将路径传递给。xls和。

  • 问题内容: 我有一个批处理文件,它将搜索一个Java进程并将其杀死。当bat文件在命令提示符下运行时,脚本可以正常工作。但是,当我尝试在任务计划程序中执行时,它不起作用。 我选择了“无论用户是否登录都运行”选项 我的批处理文件如下所示: 我还尝试了此链接中提到的所有内容 批处理手动运行,但不在计划任务中运行 还有其他建议。 注意:我还有另一个批处理文件来存档文件,该文件可以在任务计划程序中使用相同