我正在尝试将参数从.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%
答案 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);
....
如果参数可能包含空格,这会导致更少的问题。