none
System.Diagnostics.Process.Start("dateiHolen.bat") funktioniert nicht RRS feed

  • Frage

  • Hi zusammen,

    ich habe jetzt inzwischen Tagelang Google rauf und runter gesucht. Habe auch etwas passendes gefunden. Funktioniert aber nicht.

    Ich möchte nichts weiter als eine .bat Datei über Visual Studio ausführen. 

    Dazu nutze ich 

    System.Diagnostics.Process.Start("dateiHolen.bat")

    Er findet die Datei aber einfach nicht. Win32Exception. Die Datei ist aber da. So langsam wird das zum Akt der Verzweifelung. Ich hoffe ihr könnt mir helfen.

    Was ich bisher probiert habe:

     System.Diagnostics.Process.Start("C:\Dokumente und Einstellungen\MeinName\Eigene Dateien\Visual Studio 2010\Projects\HKGT Beobachterplattform\HKGT Beobachterplattform\dateiHolen.bat") 

    Ich habe das dann noch mal in C:\temp gepackt:

      System.Diagnostics.Process.Start("C:\temp\dateiHolen.bat")

    Dann habe ich versucht eine einfache .txt Datei im temp zu öffnen:

      System.Diagnostics.Process.Start("C:\temp\test.txt")

    Das hat ALLES nicht funktioniert. Habe dann noch einige Sachen probiert die Google mir ausgespuckt hat. War aber auch nicht das wahre.

    Vielen Dank für eure Hilfe

    Idhaun 


    • Bearbeitet Idhaun Sonntag, 24. August 2014 20:03
    Sonntag, 24. August 2014 19:59

Antworten

  • Hi,

    also erstmal würde ich sagen -> falsches Forum, denn mit VB6 hat da ja nichts zu tun.

    Was das Escapen angeht, das funktioniert in VB.NET nicht so wie in C#.

    Du könntest folgendes versuchen:

    myString = System.Text.RegularExpressions.Regex.Unescape(myString)

    Ich habe hier auch noch eine Function gefunden von mir mit der du es mal ausprobieren kannst

    die Batch aufzurufen.

     Public Shared Sub Run_CMD(ByVal Aufruf As String, Optional ByVal WaitforExit As Boolean = True, Optional ByVal hide As Boolean = True)
    
            Dim sCmd As String
            sCmd = Environ("comspec")
            Dim p As New System.Diagnostics.Process
    
            With p
                If hide Then
                    .StartInfo.WindowStyle = ProcessWindowStyle.Hidden
                End If
    
                .StartInfo.FileName = sCmd
                .StartInfo.Arguments = " /C " & Aufruf
                .Start()
    
                If WaitforExit Then
                    .WaitForExit()
                End If
            End With
    
        End Sub

    Gruß

    Jens

    • Als Antwort markiert Idhaun Mittwoch, 24. September 2014 17:50
    Donnerstag, 28. August 2014 17:38

Alle Antworten

  • Hallo,

    der Pfad muss mit dem @-Zeichen "escaped" werden.

    Beispiel:

     System.Diagnostics.Process.Start(@"d:\dev\OpenApplication.bat");


    Gruß, Mathias

    Montag, 25. August 2014 12:05
  • Hallo Idhaun,


    Eine andere Möglichkeit wäre, die "\"-Zeichen mit "/" oder "\\" zu ersetzen.
    Beispiel:

    System.Diagnostics.Process.Start("C:/temp/Test.bat")

    oder

    System.Diagnostics.Process.Start("C:\\temp\\Test.bat")


    Weitere Informationen über System.Diagnostics.Process.Start finden Sie unter [1] und [2].

    [1] http://msdn.microsoft.com/de-de/library/53ezey2s(v=vs.110).aspx
    [2] http://www.dotnetperls.com/process-vbnet

    Viele Grüße
    Bo Liu
    MSDN-Entwickler-Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN-Entwickler-Hotline: http://www.msdn-online.de/Hotline
    App-Entwickler-Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

    Es gelten für die MSDN-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu Markenzeichen, Informationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die MSDN-Entwickler-Hotline.




    • Bearbeitet raulliubo Dienstag, 26. August 2014 12:19
    Dienstag, 26. August 2014 12:12
  • Sicherlich ist \\ auch eine Möglichkeit, aber die Fehleranfälligkeit ist dabei auch besonders hoch. Man muss nur eine Stelle vergessen anzupassen.

    Das ist das Voranstellen des @-Zeichens die präferierte und zuverlässigere Variante.


    Gruß, Mathias

    Dienstag, 26. August 2014 12:24
  • Aber ich glaube, dass das @-Zeichen bzw das "verbatim string" is nicht für Visual Basic verfügbar oder?

    Viele Grüße
    Bo

    Dienstag, 26. August 2014 12:59
  • Hi,

    leider funktioniert das @ zeichen in VB nicht.

    Trotzdem danke

    Donnerstag, 28. August 2014 15:58
  • Hi,

    Danke für eure Antworten.

    Leider funktioniert weder der / noch der \\

    Zudem ist es wichtig, dass der Pfad variabel ist, da das Programm später auf anderen PC's ausgeführt werden soll.

    Also soll es so aussehen.

    System.Diagnostics.Process.Start("dateiHolen.bat")

    Ich verstehe nicht, warum es so überhaupt nicht funktionieren will. Aber Danke für eure Mühe. Hat noch jemand eine Idee?

    Donnerstag, 28. August 2014 16:01
  • Da du den Pfad ja dynamisch erstellen willst nutze doch die Path.Combine Methode.
    Donnerstag, 28. August 2014 16:09
  • Hi,

    also erstmal würde ich sagen -> falsches Forum, denn mit VB6 hat da ja nichts zu tun.

    Was das Escapen angeht, das funktioniert in VB.NET nicht so wie in C#.

    Du könntest folgendes versuchen:

    myString = System.Text.RegularExpressions.Regex.Unescape(myString)

    Ich habe hier auch noch eine Function gefunden von mir mit der du es mal ausprobieren kannst

    die Batch aufzurufen.

     Public Shared Sub Run_CMD(ByVal Aufruf As String, Optional ByVal WaitforExit As Boolean = True, Optional ByVal hide As Boolean = True)
    
            Dim sCmd As String
            sCmd = Environ("comspec")
            Dim p As New System.Diagnostics.Process
    
            With p
                If hide Then
                    .StartInfo.WindowStyle = ProcessWindowStyle.Hidden
                End If
    
                .StartInfo.FileName = sCmd
                .StartInfo.Arguments = " /C " & Aufruf
                .Start()
    
                If WaitforExit Then
                    .WaitForExit()
                End If
            End With
    
        End Sub

    Gruß

    Jens

    • Als Antwort markiert Idhaun Mittwoch, 24. September 2014 17:50
    Donnerstag, 28. August 2014 17:38
  • Hi,

    Danke für eure Antworten.

    Ich muss das nächste Woche mal ausprobieren.

    Sorry, dass ich im falschen Forum gelandet bin. Da habe ich irgendwie ein Talent für -.-*

    Freitag, 29. August 2014 18:34
  • Hi,

    sorry. Es klappt alles wunderbar. Mein Visual Studio hatte ne Macke und musste neu installiert werden. Da muss man aber auch erst mal drauf kommen :-D

    Danke für eure Hilfe

    Dienstag, 2. September 2014 15:48