Есть ли способ запустить команды командной строки из приложения C #? Если так, как бы я сделал следующее:
copy /b Image1.jpg + Archive.rar Image2.jpg
Это в основном встраивает файл RAR в изображение JPG. Мне просто интересно, есть ли способ сделать это автоматически в C #.
Ответы:
это все, что вам нужно сделать, запустить команды оболочки из C #
РЕДАКТИРОВАТЬ:
Это чтобы скрыть окно cmd.
РЕДАКТИРОВАТЬ: 2
Важно то, что аргумент начинается с,
/C
иначе он не будет работать. Как сказал Скотт Фергюсон : «Выполняет команду, указанную в строке, а затем завершается».источник
Пробовал решение @RameshVel, но я не мог передать аргументы в моем консольном приложении. Если кто-то испытывает ту же проблему, вот решение:
источник
cmd.StandardInput.WriteLine(@"cd C:\Test; pwd")
источник
@
знак в C #?proc1.FileName = "C:\\Windows\\System32\\cmd.exe";
proc1.Verb = "runas";
этот процесс запускается с повышенными привилегиями ... Это не всегда задумано.По какой-то причине ни один из приведенных выше ответов не помог, похоже, что они скрывают ошибки под ковриком и затрудняют поиск неисправностей в команде. Так что я закончил с чем-то вроде этого, может быть, это поможет кому-то еще:
источник
cmd.exe
приложение, вы можете передавать команды в качестве аргументов.echo Hello World!
и отобразил вывод команды в появившемся окне cmd. Так что я пробовал:Filename = @"echo"
,Arguments = "Hello World!"
,UseShellExecute = false
,RedirectStandardOuput = false
,CreateNoWindow = false
. Это позволило окну cmd родительского приложения отображать «Hello World!» (что имеет смысл, потому что stdout не был перенаправлен на дочерний процесс).Хотя технически это не дает прямого ответа на поставленный вопрос, оно отвечает на вопрос о том, как сделать то, что хотел сделать первоначальный плакат: объединить файлы. Во всяком случае, этот пост поможет новичкам понять, о чем говорят Инстанс Хантер и Константин.
Этот метод я использую для объединения файлов (в данном случае это jpg и zip). Обратите внимание, что я создаю буфер, который заполняется содержимым zip-файла (небольшими порциями, а не одной большой операцией чтения), и затем буфер записывается в конец jpg-файла до тех пор, пока конец zip-файла не станет достиг:
источник
если вы хотите оставить окно cmd открытым или хотите использовать его в winform / wpf, используйте его следующим образом
Будет держать окно cmd открытым
источник
cmd
команды и ее параметров.Да, есть (см. Ссылку в комментарии Мэтта Гамильтона), но было бы проще и лучше использовать классы ввода-вывода .NET. Вы можете использовать File.ReadAllBytes для чтения файлов, а затем File.WriteAllBytes для записи «встроенной» версии.
источник
Вы можете сделать это, используя CliWrap в одну строку:
источник
Unable to find package 'CliWrap' at source
со ссылкой на
Microsoft.VisualBasic
источник
Вот немного простой и менее версии кода. Это также скроет окно консоли.
источник
если вы хотите выполнить команду в асинхронном режиме - и распечатать результаты. Вы можете вам этот класс:
источник
Вы можете достичь этого, используя следующий метод (как упоминалось в других ответах):
Когда я попробовал методы, перечисленные выше, я обнаружил, что моя пользовательская команда не работает с использованием синтаксиса некоторых из ответов выше.
Я обнаружил, что более сложные команды должны быть заключены в кавычки для работы:
источник
Вы можете просто написать код в
.bat
расширении формата, код пакетного файла:c:/ copy /b Image1.jpg + Archive.rar Image2.jpg
используйте этот код C #:
Process.Start("file_name.bat")
источник
.vbs
расширении формата, код:CreateObject("Wscript.Shell").Run "filename.bat",0,True