java中调用.vbs文件,vbs文件并没有反应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中调用.vbs文件,vbs文件并没有反应相关的知识,希望对你有一定的参考价值。

在编写java程序时使用String command = “D://a.vbs”;//a.vbs文件的路径
Process pro = Runtime.getRuntime().exec(command);
结果没有出错但并没有运行vbs文件。。如果改用exe或者bat文件就能运行,但java那个dos窗口还在。。
请高手帮忙:用什么方法才能调用vbs文件。。。2、怎么去掉java的dos窗口。。
谢谢!!!!

参考技术A C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin>wscript "C:\\Program
Files\\Apache Software Foundation\\Tomcat 7.0\\bin\\tomcat.vbs"

C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin>tomcat

java代码:
Process process=Runtime.getRuntime().exec("cmd /c wscript \"C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\bin\\tomcat.vbs\"");
// wait for the process end
process.waitFor();//是返回值
参考技术B 试试String command = “c://windows//system32//wscript.exe D://a.vbs”

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

【中文标题】调用 vbs 的批处理文件不会从任务调度程序运行【英文标题】:Batch file calling vbs wont run from Task scheduler 【发布时间】:2015-09-05 12:04: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 手动运行它,一切都很好。

【问题讨论】:

您确定 vbscripts 没有实际运行吗?它们可能正在运行,但由于某种原因而失败...例如在计划作业中以不同的用户帐户运行。 是的,我确定 vbs 没有运行。我使用域管理员权限运行它。当我手动运行它时,它将占用 100% 的杯子和 85% 的内存,但如果我从任务调度程序运行它,所有系统资源都处于空闲状态...... 它是否将您的日期和时间以及“批处理完成”消息写入日志文件? vbscript 行中是否有任何内容写入%logfile% 如果您没有获取日志文件,那么问题可能出在计划任务设置中。如果它正在创建日志文件,那么您应该会看到 VB 脚本的输出以及它们输出的任何错误。 【参考方案1】:

改掉使用 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

【讨论】:

以上是关于java中调用.vbs文件,vbs文件并没有反应的主要内容,如果未能解决你的问题,请参考以下文章

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

如何用vb.net 调用VBS文件?

vbs怎样操纵java的GUI

VB程序如何执行VBS文件?【答对+40分】

本人是菜鸟,请教java如何运行vbs

在没有外部文件的 WinPE 中识别 CD 驱动器并使用 bat 或 vbs 弹出