Batch Dateien und cmd-Code funktionieren nicht, wenn mit VB Code gestartet

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Batch Dateien und cmd-Code funktionieren nicht, wenn mit VB Code gestartet

    Hallo!

    Zur Zeit arbeite ich an einem Toolkit, das verschiedenste Windows Tools beinhaltet, um Fehler zu beheben.
    So kommt es, dass ich auch cmd-Code ausführen muss.
    Das klappt an sich auch ganz gut:

    VB.NET-Quellcode

    1. Process.Start("cmd", "/C echo Example & PAUSE")


    Beenden und Starten von Diensten wickle ich auf diese Weise ab.


    Jetzt das Problem:
    Ich möchte die ua. eingebaute "sfc /scannow" Option verwenden.

    Meine Ansätze:
    Normal per cmd:

    VB.NET-Quellcode

    1. Process.Start("cmd", "/C echo Please wait until this Process is completed. It might take some time. & sfc /scannow & PAUSE")

    Per Batch-Datei:

    VB.NET-Quellcode

    1. Process.Start(My.Computer.FileSystem.SpecialDirectories.Temp & "\WUPF\Scripts\sfc.scannow.bat")


    Batch Code:

    C-Quellcode

    1. @echo off
    2. rem Script Version 1.0
    3. title Scan System for Filesystem Errors
    4. color c
    5. echo Please wait until this Process is completed. It might take some time.
    6. sfc /scannow
    7. PAUSE


    Wenn ich dieses Skript per VB-Code starte (mit Admin-Rechten) kommt diese Fehlermeldung im cmd Fenster:



    Befehl normal in cmd eingegeben:


    Leider weiß ich nicht mehr weiter...
    Aber vielleicht kann mir hier ja jemand weiterhelfen.
    :)

    MfG Manuauto

    Verschoben. ~Trade

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()

    Du musst das Programm sfc.exe mit dem Argument /scannow starten und nicht die CMD mit dem Argument sfc /scannow.

    Manuauto schrieb:

    Process.Start("cmd", "/C echo Please wait until this Process is completed. It might take some time. & sfc /scannow & PAUSE")
    Das geht sowieso nicht, weil du dadurch ja einfach nur Text ausgibst.
    @Manuauto Du solltest dem Programm sagen, in welchem Verzeichnis es laufen soll:

    VB.NET-Quellcode

    1. Dim p As New Process()
    2. p.StartInfo.FileName = "Notepad.exe"
    3. p.StartInfo.Arguments = "c:\temp\Bla.txt"
    4. p.StartInfo.WorkingDirectory = "c:\temp" ' das hier
    5. p.Start()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!