Запуск .bat в фоновом режиме - PullRequest
2 голосов
/ 28 сентября 2011

Итак, у меня есть это в моей кодировке:

VB код:

file = My.Computer.FileSystem.OpenTextFileWriter("c:\command.bat", False)
        file.WriteLine("@echo off")
        file.WriteLine("cd " & TextBox2.Text)
        file.WriteLine("adb shell dumpsys meminfo " & TextBox1.Text & " > C:\Sample.txt")
        file.Close()
        Shell("C:\command.bat") 

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

Ответы [ 2 ]

3 голосов
/ 01 октября 2011

Вот пример того, как использовать Process.Start со скрытым окном

    Dim params As String = "C:\command.bat"
    Dim myProcess As New ProcessStartInfo
    myProcess.FileName = "cmd.exe"
    myProcess.Arguments = params
    myProcess.WindowStyle = ProcessWindowStyle.Hidden
    Process.Start(myProcess)

если вы столкнулись с проблемой отсутствия файлов с указанием пути, вы можете попытаться добавить следующий вызов Windows API и запустить путь к файлу через эту функцию.

'This would be declared at the top of your Form Code/Class Code
Private Declare Auto Function GetShortPathName Lib "kernel32" ( _
ByVal lpszLongPath As String, _
ByVal lpszShortPath As StringBuilder, _
ByVal cchBuffer As Integer) As Integer

А здесь есть функция для возврата обратно ShortPath (путь в стиле win98 (т.е. c: /progra~1/myfolder/myfile.bat)

Public Function GetShortPath(ByVal longPath As String) As String
    Dim requiredSize As Integer = GetShortPathName(longPath, Nothing, 0)
    Dim buffer As New StringBuilder(requiredSize)

    GetShortPathName(longPath, buffer, buffer.Capacity)
    Return buffer.ToString()
End Function

затем просто вызовите свой путь, как этот, в функции process.start

    Dim params As String = GetShortPathName("C:\command.bat")
3 голосов
/ 28 сентября 2011
Shell("C:\command.bat", AppWinStyle.Hide)

Это запустит пакетный файл, но окно скрыто.

или используйте Process.Start, как предложено Дэвидом.with WindowStyle = ProcessWindowStyle.Hidden

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