Принимать параметры из консольного приложения .Net в пакетный файл

#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:

Если вы передаете их как параметры, вы можете сделать это в коде 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);
....
  

Это вызывает меньше проблем, если параметры могут содержать пробелы.