2016-08-26 6 views
1

Я пытаюсь связаться с CMD через мою форму, но я столкнулся с ошибкой «File Path Not Specified», хотя я дал ей полную информацию или у меня есть? Я постараюсь предоставить как можно больше информации. Если вам нужно что-то конкретное, дайте мне знать. Итак, как это работает, вы нажимаете кнопку1 и открывает командную строку. Затем переходит на загрузку Label3, label1, затем текст label2, или, возможно, этот процесс происходит сразу (нет подсказки). Они все должны работать вместе, чтобы создать последовательность кода без необходимости касаться любой части этого процесса.CMD "Путь к файлу не указан". Visual Basic 2008 form to cmd

Функция BUTTON1 в

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Shell("C:\Windows\System32\cmd.exe /k" + Label3.Text + Label1.Text + Label2.text, AppWinStyle.NormalFocus) 
End Sub 

Тогда я сделал form1 загрузить это множество вещей при запуске.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Label1.Text = "Wow-64.exe" 
    Label2.Text = "-launcherlogin -noautolaunch64bit -launch -uid wow_enus" 
    Label3.Text = "cd /d D:\World of Warcraft2" 
End Sub 

поэтому его загрузка текста в ярлыках при запуске готова для заказа последовательности quit1.

Когда я нажимаю кнопку, я получаю ошибку пути к файлу as shown here. Файл, с которым я пытаюсь взаимодействовать, находится на моем диске D: \ (если это помогает, еще раз нет подсказки). Что странно, я набрал весь этот код в CMD, и он отлично работал без ошибок, но при этом он не может найти файл из того, что я получаю. Как я уже сказал, если я не предоставил достаточно информации, просто скажите мне, что вам нужно, и я отвечу.

+0

Проверьте расстояние. Ваша строка в оболочке будет объединена с 'C: \ Windows \ System32 \ cmd.exe/kcd/d D: \ World of Warcraft2' (обратите внимание на часть' kcd') – Takarii

+0

@Takarii: Еще хуже, см. Мой ответ. –

ответ

0

Прежде всего, никогда не конкатенации строк с оператором +, всегда используйте амперсанд: &. Оператор + может вызвать проблемы в будущем, которые вы никогда не испытаете с амперсандом (See this for a few examples).


Во-вторых, вы, кажется, не хватает пространства между /k и Label3.Text, а также между Label1/2/3.Text. Это создаст строку типа:

/kcd /d D:\World of Warcraft2Wow-64.exe-launcherlogin -noautolaunch64bit -launch -uid wow_enus 

вместо фактического:

/k cd /d D:\World of Warcraft2 Wow-64.exe -launcherlogin -noautolaunch64bit -launch -uid wow_enus 

Кстати, вы также требуют амперсанд между вашими двумя командами и кавычки вокруг них поскольку они включают пробелы. Например:

/k cd /d "D:\World of Warcraft2" & Wow-64.exe "-launcherlogin -noautolaunch64bit -launch -uid wow_enus" 

В-третьих, и, наконец,, я предлагаю вам использовать Process.Start() method вместо Shell(). Shell() устарел и существует только для обратной совместимости.

Первый аргумент Process.Start() - это путь к процессу, который вы хотите запустить, а второй - параметры, которые вы хотите отправить на него. Кроме того, вместо указания полного пути cmd (поскольку он может быть другим на некоторых компьютерах) просто скажите cmd.exe.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Label1.Text = "Wow-64.exe" 
    Label2.Text = "-launcherlogin -noautolaunch64bit -launch -uid wow_enus" 
    Label3.Text = "cd /d ""D:\World of Warcraft2""" '<-- Added additional quotes. 
End Sub 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Process.Start("cmd.exe", "/k " & Label3.Text & " " & Label1.Text & " """ & Label2.text & """") 
End Sub 

Typing две цитаты ("") это самый быстрый способ добавить цитату в строку в VB.NET, и так как он должен быть окружен двумя другими цитатами этого: """" создаст одну цитату.

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

  • Нет связанных вопросов^_^