2011-10-11 39 views
1

我試圖將.Net控制檯應用程序的參數傳遞給批處理文件。參數不會進入批處理文件。將.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% 

回答

2

如果將它們作爲paramters,你可以在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); 
.... 

這會導致較少的問題,如果所述參數可包含空格。

+0

太棒了!謝謝.... – sagesky36

相關問題