Команды оболочки в VB - PullRequest
       1

Команды оболочки в VB

2 голосов
/ 10 января 2012

Почему-то кажется, что амперсанды не работают так, как должны, когда я пытаюсь использовать их в командах оболочки в VB. Когда я пытаюсь связать две команды вместе в одной строке, используя амперсанд, я получаю сообщение об ошибке: «filenotfoundexception is nothandled file not found»

Я пытаюсь выполнить команду:

 Shell("cd " & TextBox2.Text.ToString & " & adb -s " & TextBox15.Text.ToString & " shell monkey -p " & TextBox1.Text.ToString & " -v 1", AppWinStyle.Hide) 

Я попытался разбить его на более упрощенную форму, но я все еще получаю сообщение об ошибке:

 Shell("cd C:\ & adb shell monkey -p com.android.system -v 1", AppWinStyle.Hide)

Если я избавлюсь от амперсанда и просто использую:

 shell(adb shell monkey -p com.android.system -v 1", AppWinStyle.Hide)

все работает просто отлично. А амперсанды не доступны в командах оболочки vb?


* Мои правки

На самом деле у меня все еще проблемы. Итак, что у меня есть:

    psi.WorkingDirectory = TextBox2.Text.ToString
    psi.FileName = "adb"
    psi.WindowStyle = ProcessWindowStyle.Hidden

Затем у меня есть немного кода, а затем я назначаю аргумент и выполняю аргумент:

    psi.Arguments = "-s " & TextBox15.Text.ToString & " shell monkey -p " & TextBox1.Text.ToString & " -v  1"
    Process.Start(psi)

затем у меня есть немного кода, и затем я пытаюсь снова запустить процесс с другим аргументом:

    psi.Arguments = "-s " & TextBox15.Text.ToString & " shell input keyevent 3"
    Process.Start(psi)

Первый, кажется, работает, все последующие - нет. Есть ли причина, почему это не должно работать? обновление процесса или что-то, чего мне не хватает?

Ответы [ 3 ]

5 голосов
/ 10 января 2012

удалил мой другой ответ, нашел более простой способ сделать это.

Это то, что вы хотите ...

Shell("cmd.exe /c cd C:\ & adb shell monkey -p com.android.system -v 1", AppWinStyle.Hide)

Вставка в исходный код ...

Shell("cmd.exe /c cd " & TextBox2.Text.ToString & " & adb -s " & TextBox15.Text.ToString & " shell monkey -p " & TextBox1.Text.ToString & " -v 1", AppWinStyle.Hide) 

Я протестировал первый пример, и он, похоже, сработал.

3 голосов
/ 10 января 2012

Рассматривали ли вы использование объекта Process для запуска ADB с установленными параметрами CommandLine

Dim psi As New ProcessStartInfo

psi.WorkingDirectory = "c:\"
psi.Arguments = "shell monkey -p com.android.system -v 1"
psi.FileName = "ADB"
psi.WindowStyle = ProcessWindowStyle.Hidden
return Process.Start(psi)

в том случае, если ваша программа ADB позволяет запускать только один экземпляр, возможно, вам нужно добавить следующее

Dim ps As Process = Process.Start(psi)
ps.WaitForExit()

psi.Arguments = 'new arguments
Process.Start(psi)
2 голосов
/ 10 января 2012

Команда Shell ожидает имя файла, поэтому расширения командной строки не будут работать.

Есть несколько вариантов:

1) Запустите cmd.exe с помощью process.start и передайте параметры (я не проверял это, поэтому не уверен, будет ли он работать.

2) Создайте свои команды в файле .cmd или .bat, а затем выполните оболочку этого файла (кажется, это может быть самым простым подходом).

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