Aravindba Ответов: 1

Как запустить cmd с аргументами в VB.NET


Привет я пытаюсь сгенерировать js файл из pdf с помощью pdfjson.exe, когда я запускаю в командной строке cmd (вручную), это работает, если я запускаю это с помощью vb.net, не генерируя js-файл.Но он поразил весь код процесса,только js-файл не генерируется.

Есть ли другой способ запустить cmd из vb.code?

Что я уже пробовал:

Это мой код внутри vb.net
Dim process As New System.Diagnostics.Process
        process.StartInfo.FileName = "cmd.exe"
        process.StartInfo.UseShellExecute = False
        process.StartInfo.CreateNoWindow = True
        process.StartInfo.RedirectStandardInput = True
        process.StartInfo.RedirectStandardOutput = True

        process.Start()
        Dim actualFilePath As String =Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Substring(6) & "\sample\a.pdf"
        Dim viewPath As String = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Substring(6) & "\sample"
        Dim dynamicFLXname As String = "a"

        process.StandardInput.WriteLine("cd " & My.Settings.FLEX)
        process.StandardInput.WriteLine("pdf2json.exe """ & actualFilePath & """ -enc UTF-8 -hidden -compress """ & viewPath & "\" & dynamicFLXname & ".js""")


        process.StandardInput.WriteLine("exit")
        Dim input As String = process.StandardOutput.ReadToEnd
        process.Close()



С уважением,
Аравинд

1 Ответов

Рейтинг:
2

OriginalGriff

Начните с использования отладчика и посмотрите на строку, которую вы отправляете в систему, включая путь, который вы прикрепляете к команде CD.
Затем удалите "выход" и обработайте.Закройте команды, измените StartInfo, чтобы создать окно, и посмотрите, что именно команда делает с вашими входными данными, просмотрев ее ответы.

- Я? Я бы установил EXE - файл в качестве процесса для запуска и передал оставшиеся данные в качестве параметров этой команде-и установил свойство WorkingDirectory объекта ProcessStartInfo вместо того, чтобы вообще возиться с входными данными.


Aravindba

Привет, да, я изменил код вот так
Тусклый процесс как новая система.Диагностика.Процесс
процесс.свойство StartInfo.Имя файла = "cmd.exe"
процесс.Информацию.Значение Свойства Useshellexecute = False В
процесс.свойство StartInfo.CreateNoWindow = False

процесс.Информацию.RedirectStandardInput = Истина
процесс.StartInfo.RedirectStandardOutput = True

процесс.Начать()
Dim actualFilePath As String = Path.GetDirectoryName(System.Отражение.Собрание.GetExecutingAssembly().Метод getname().Кодовой базы).Подстрока(6) & "\Aspose\a.pdf"
Dim viewPath As String = Path.GetDirectoryName(System.Отражение.Собрание.GetExecutingAssembly().Метод getname().Кодовой базы).Подстрока(6) & "\Aspose"
Dim dynamicFLXname As String = "a"


Приложение.Функция doevents()



процесс.Стандартный вход.WriteLine("cd" & My.Settings.FLEX)
процесс.Стандартный вход.Метода WriteLine("ничья -Р mutool 90 -б 1000 -о """ &амп; viewPath &ампер; "\" &амп; dynamicFLXname &ампер; ".pdf_%д'.ПНГ"" """ &амп; actualFilePath усилителя; """")

Приложение.Функция doevents()

' процесс.Стандартный вход.WriteLine("выход")
Тусклый ввод в виде строки = процесс.StandardOutput.ReadToEnd
- процесс.Закрывать()


Я получаю ошибку в командной строке cmd
скриншот ошибки ---http://prntscr.com/j6axwa

в чем проблема ? тот же код работает в другом приложении windows и службе win также, когда я создаю новое приложение win с тем же кодом , который не работает, почему ?

OriginalGriff

Посмотрите на сообщение об ошибке - оно не может быть более ясным.
Он не может найти приложение под названием "mutool", поэтому либо оно не установлено, либо не находится в пути, либо не находится в папке, которую вы ожидаете.

Я не могу исправить это для тебя!