2013-04-01 3 views
3

Мой сценарий в проекте C# - это путь пользователя, который должен пройти путь, например "c:\homedir\mydir", к пакетному файлу, тогда командный файл должен принять этот путь и создать каталог по указанному пути.Как передать строку в пакетный файл через C# и как пакетный файл примет строковый аргумент?

Я не знаю, как передать строку в пакетный файл через C# и как пакетный файл примет строку и обработает ее.

+0

[Как отправить последовательность команд в процесс командного окна?] (Http://stackoverflow.com/a/4789324/417747) – NSGaga

+0

Зачем передавать параметр в пакетный файл? Вы не можете обрабатывать внутри приложения C#? Это усложняет такие вещи, как получение обратной связи от командного файла. Как вы узнаете, что что-то пошло не так? Вы можете использовать коды состояния/результата, но это не очень удобно. –

+0

Hi Peter Спасибо за ваши предложения, я постараюсь сделать то же самое из приложения C#. – Rushikesh

ответ

2

Создайте процесс и передайте свои аргументы через свойство StartInfo.Arguments.

Это будет загружать ваш файл BAT и передавать любые аргументы, которые вы добавили. Ваш BAT-файл может получить доступ к аргументам, используя %1 для первого аргумента, %2 для второго и т. Д.

+0

Возможно, добавьте информацию о том, как код C# знает, что пакетный процесс закончился. Что делать, если он бесконечно петляет? BTW, прежде чем даже начать новую проверку процесса, если данный каталог существует. –

+0

Справедливый комментарий, но мой ответ предполагает, что OP будет нести ответственность за обработку ошибок. В сообщении OP недостаточно информации, чтобы сделать все возможное, чтобы охватить все возможные аспекты. – keyboardP

+0

Спасибо keyboardP – Rushikesh

1

Поскольку вы не предоставили нам никакой информации, я просто приведу пример этих предметов.

Прежде всего, вам необходимо использовать Process класс include System.Diagnostics namespace.

Предоставляет доступ к локальным и удаленным процессам и позволяет начать и остановить локальные системные процессы.

Пример с помощью пакетного файла:

Process p = new Process(); 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.FileName = "yourbatchfile.bat"; 
p.Start(); 

Для передачи аргументов, вы можете использовать ProcessStartInfo.Arguments свойство.

Получает или задает набор аргументов командной строки для использования при запуске приложения .

+0

Спасибо Soner, мне это полезно – Rushikesh

+0

@Rushikesh Добро пожаловать ';)' –

Смежные вопросы