Batch file 在不可见模式下运行主bat文件

Batch file 在不可见模式下运行主bat文件,batch-file,scheduled-tasks,Batch File,Scheduled Tasks,我有一个master.bat文件,它有 call file1.bat call file2.bat call file3.bat call file4.bat 我想在我的Windows server 2008上安排它在静默/不可见模式下运行。我正在寻找某种方法来运行此master.bat,而用户看不到任何东西(没有窗口、CMD界面、没有任务栏名称等) 我不想安装任何批处理到exe软件 我尝试将运行任务的用户更改为“系统”,它已经完成了工作,但实际上我无法做到这一点。 我发现Windows脚本主

我有一个master.bat文件,它有

call file1.bat
call file2.bat
call file3.bat
call file4.bat
我想在我的Windows server 2008上安排它在静默/不可见模式下运行。我正在寻找某种方法来运行此master.bat,而用户看不到任何东西(没有窗口、CMD界面、没有任务栏名称等) 我不想安装任何批处理到exe软件

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

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\Batch Files\master.bat" & Chr(34), 0
Set WshShell = Nothing
但是没有更多的文件了:)还有其他的建议吗

EDIT1


考虑到可用选项有限..可以使用Windows脚本主机的运行方法,但如何在任务计划程序中计划master.vbs

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


它被各种AV程序标记为黑客工具。

有关它的扩展视图,请检查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);

使用脚本shell是在不弹出窗口的情况下创建CMD进程的唯一方法这是正确的。你可以从服务器上运行一些东西并让它与远程计算机联系,但是如果你使用.BAT,从最终用户的计算机上运行它至少会显示最小化。使用脚本作为@Antoniossss said是唯一的方法。@TKE..假设我使用Windows脚本主机的Run方法来运行master.bat hidden..但要调度master.vbs..我需要另一个.bat文件..P.s:问题@Foxi..我无法进行任何新的.exe安装..比方说我使用Windows脚本主机的Run方法来运行master.bat hidden..但是为了调度master.vbs文件,我不需要另一个.bat文件吗?@MC…当我将代码放入批处理区域后双击master.cmd时..一个cmd窗口会弹出几秒钟..上面混合批处理的优点是什么?优点只有一个文件。如果以批处理方式启动,则除了显示第二个cmd窗口的这一部分之外,别无选择。但是,如果您直接以
wscript//E:JScript“c:\where\miBatch.cmd”
的形式启动javascript部分,则不会有任何可见窗口。