【问题标题】:Running master bat file in invisible mode以隐形模式运行主 bat 文件
【发布时间】:2013-11-05 16:35:13
【问题描述】:

我有一个 ma​​ster.bat 文件,其中包含...

call file1.bat
call file2.bat
call file3.bat
call file4.bat

我想在我的 Windows Server 2008 上安排它以静默/不可见模式运行。我正在寻找某种方法来运行此 ma​​ster.bat,而对用户不可见(无窗口, CMD 界面, 没有任务栏名称等..) 我不想安装任何批处理到 exe 软件。

我尝试将运行任务的用户更改为“SYSTEM”,它已经完成了工作,但实际上我无法做到这一点。 我发现 Windows Script Host 的 Run Method 允许您以不可见模式运行脚本......

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\Batch Files\master.bat" & Chr(34), 0
Set WshShell = Nothing

但请不要再提交文件了 :) 对此有任何其他建议。

EDIT1

考虑到可用的选项有限..使用 Windows Script Host 的运行方法是可以的,但是我如何在任务调度程序中调度 master.vbs..?

【问题讨论】:

  • 使用脚本shell是创建CMD进程不弹出窗口的唯一方法
  • 这是真的。 . .有点
  • 您可以从服务器运行某些内容并让它与远程计算机联系,但如果您使用的是 .BAT,实际上从最终用户的计算机上运行它至少会显示最小化。正如@Antoniossss 所说,使用脚本是唯一的方法。
  • @TKE..假设我使用 Windows Script Host 的运行方法来运行 master.bat hidden..但是要安排 master.vbs..我需要另一个 .bat 文件..PS:PROBLEM ..!!

标签: batch-file scheduled-tasks


【解决方案1】:

CMDOW 是一个允许批处理隐藏运行的工具。

它被各种反病毒程序标记为黑客工具。

【讨论】:

  • @Foxi ..我无法安装任何新的 .exe ..假设我使用 Windows Script Host 的运行方法来运行 master.bat hidden..但要安排 master.vbs 文件,我不需要另一个 .bat 文件吗?
【解决方案2】:

要查看它的扩展视图,请在 stackoverflow 中检查混合批处理/vbscript/javascript 文件。

将此保存为 master.cmd 并根据需要进行调整。

@if (@This==@IsBatch) @then
@echo off
rem **** batch zone *********************************************************

    rem Check if started from javascript part of script.
    rem We are checking an environment variable set from javascript part.
    if "%_run_hidden_%"=="true" (
        goto startBatchWork
    )

    rem if not started from javascript, call javascript part to restart batch.
    wscript //E:JScript "%~dpnx0" 
    exit /b

:startBatchWork

    rem Here starts the real work of the batch file

    msg %username% "Batch file running hidden"





    rem End of batch area. Ensure batch ends execution before reaching
    rem javascript zone
    exit /b

@end
// **** Javascript zone *****************************************************
// Instantiate the needed component to interact with Shell
var shell = WScript.CreateObject('WScript.Shell');

    // Set the environment variable that the batch part will check to know
    // it's running hidden
    shell.Environment('Process').Item('_run_hidden_')='true';

    // start the batch part of the script calling %comspec% with the current
    // script as parameter, hidden (0) and not waiting for it to end (false)
    shell.Run('"' + shell.ExpandEnvironmentStrings('%comspec%') + '" /c "' + WScript.ScriptFullName + '"', 0, false );

    // All done. Exit
    WScript.Quit(0);

【讨论】:

  • @MC...当我在将代码放入批处理区域后双击 master.cmd...CMD 窗口弹出几分之一秒...以上的优势是什么混合批次?
  • 优势只有一个文件。如果您将其作为批处理启动,则除了显示第二个 cmd 窗口的这一部分之外别无选择。但是如果你直接以wscript //E:JScript "c:\wherever\miBatch.cmd" 启动javascript 部分,那么就不会有任何可见的窗口。
猜你喜欢
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多