如何通过asp.net schtasks将参数传递给bat文件

时间:2012-12-21 01:14:00

标签: batch-file process.start schtasks.exe

我正在尝试使用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接收参数?

感谢!!!

1 个答案:

答案 0 :(得分:1)

schtasks.exe没有任何命令行功能可以将参数传递到计划任务中。一种可能的方法是将参数文本保存在自己的(临时)bat文件中,其中包含特制的内容以将其设置为环境变量。然后,您所要做的就是从计划的任务bat文件中调用参数bat文件,并设置环境变量。

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

set parm=ParameterToPass2

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

C:\wherever\argument.bat