将.Net控制台应用程序中的参数接受到批处理文件中

时间:2011-10-11 16:49:53

标签: batch-file

我正在尝试将参数从.Net控制台应用程序传递到批处理文件。参数不会进入批处理文件。

如何正确设置将参数传递到bat文件?

以下是我正在执行的控制台应用程序中的方法。

private static int ProcessBatFile(string ifldr, string ofldr, string iext, string oext, Int16 filewidth, Int16 fileheight, Int16 ctr)
        {
            ProcessStartInfo psi = new ProcessStartInfo();
            psi.FileName = ConfigurationSettings.AppSettings.Get("BatProcessDir") + "imagemagick.bat";
            psi.Arguments = "-ifldr=" + ifldr + " -ofldr=" + ofldr + " -iext=" + iext + " -oext=" + oext + " -iwid=" + filewidth + " -ihgt=" + fileheight;
            psi.UseShellExecute = false;

            Process process = new Process();
            process.StartInfo = psi;
            process.Start();

            return ctr;
        }

下面是我正在尝试执行的bat文件中的代码:

@echo on

echo %ofldr%

echo %ifldr%

echo %iwid%

echo %ihgt% 

echo %oext% 

echo %iext%

1 个答案:

答案 0 :(得分:2)

如果将它们作为参数传递,则可以在c#代码中执行此操作:

psi.Arguments = ifldr + " " + ofldr + " " + iext + " " + oext + " " + filewidth + " " + fileheight;

并在批处理文件中执行此操作:

@echo on
set ifldr=%1
set ofldr=%2
set iext=%3
set oext=%4
set iwid=%5
set ihgt=%6

echo %ofldr%
echo %ifldr%
echo %iwid%
echo %ihgt% 
echo %oext% 
echo %iext%

作为替代解决方案,您还可以在使用System.Environment.SetEnvironmentVariable执行批处理文件之前直接修改环境:

System.Environment.SetEnvironmentVariable ("ifldr", ifldr);
....

如果参数可能包含空格,这会导致更少的问题。