Принять параметры из консольного приложения .Net в пакетный файл - PullRequest
1 голос
/ 11 октября 2011

Я пытаюсь передать параметры из консольного приложения .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 Ответ

2 голосов
/ 11 октября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...