3

我正在尝试使用 Visual Studios 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没有任何用于将参数传递到计划任务的命令行功能。一种可能的方法是将参数文本保存在其自己的(临时)bat 文件中,其中包含经过特殊设计的内容以将其设置为环境变量。然后您所要做的就是从计划任务 bat 文件中调用参数 bat 文件,并设置环境变量。

参数 bat 文件的内容如下所示:

set parm=ParameterToPass2

然后,您的计划任务 bat 文件的内容将执行参数 bat 文件:

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