0

私は持っているmaster.batファイルを持っています...

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

Windowsサーバー2008でサイレント/非表示モードで実行するようにスケジュールしたい.ユーザーに何も表示されずにこのmaster.batを実行する方法を探しています(ウィンドウなし、CMDインターフェイス、タスクバー名など.. ) バッチを実行するソフトウェアをインストールしたくありません。

タスクを実行しているユーザーを「SYSTEM」に変更してみましたが、作業は完了しましたが、実際にはできません。Windows Script Host の Run メソッドを使用すると、スクリプトを非表示モードで次のように実行できることがわかりました。

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

しかし、これ以上ファイルはありません:)これに関する他の提案。

編集1

利用可能なオプションが限られていることを考慮すると、Windows Script Host の Run メソッドを使用しても問題ありませんが、タスク スケジューラで master.vbs をスケジュールするにはどうすればよいでしょうか。

4

2 に答える 2

1

詳細については、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);
于 2013-10-27T08:51:27.680 に答える