3

Visual Studio 2005 で Windows Process.start サービスを使用して、bat ファイルを呼び出す Windows タスク スケジューラ (schtasks) を呼び出そうとしています。このプロセスは、bat ファイルがパラメーターを受け取ることを除いて正常に機能しますが、パラメーターを bat ファイルに渡そうとすると機能しません。

 public string RunSchtasks(string MachineName) 
{
    ErrorMessage = null;
    Process myProcess = new Process();
    ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("schtasks");
    myProcessStartInfo.UseShellExecute = false;
    myProcessStartInfo.RedirectStandardError = true;
    myProcessStartInfo.RedirectStandardOutput = true;
    myProcessStartInfo.Arguments = "/run /s Machinename /tn mytest ParameterToPass2Bat"; 

   myProcess.StartInfo = myProcessStartInfo;

    try
    {
        myProcess.Start();
        StreamReader myStreamReader1 = myProcess.StandardOutput;
        string QueryResult = myProcess.StandardOutput.ReadToEnd();
    }

私のコードは ParameterToPass2Bat 部分がなくても問題なく動作します。このパラメーターをbatファイルに渡したい場合、それは受け入れられません。BatファイルがSchtasksを介してパラメーターを取り込むようにする方法を知っている人はいますか?

ありがとう!!!

4

1 に答える 1

1

schtasks.exeには、スケジュールされたタスクに引数を渡すためのコマンドライン機能はありません。これを行うための1つの可能な方法は、引数テキストを、環境変数として設定するために特別に作成されたコンテンツを含む独自の(一時的な)batファイルに保存することです。次に、スケジュールされたタスクbatファイルから引数batファイルを呼び出すだけで、環境変数が設定されます。

引数batファイルの内容は次のようになります。

set parm=ParameterToPass2

スケジュールされたタスクのbatファイルの内容は、引数batファイルを実行します。

C:\wherever\argument.bat
于 2012-12-21T01:24:45.577 に答える