Befehle aus der Textbox im cmd ausführen

  • VB.NET

Es gibt 52 Antworten in diesem Thema. Der letzte Beitrag () ist von Derfuhr.

    Befehle aus der Textbox im cmd ausführen

    Nabend,

    Wie kann ich cmd befehel die in der textbox vorgegeben sind dem cmd zur ausführung über geben.

    also derzeit habe ich folgenden code

    VB.NET-Quellcode

    1. Shell(("cmd /c " & Chr(34) & "pause " & TextBox1.Text & Chr(34)))


    der cmd befehle dne ich ausführen will per button klick in meinem vb programm besteht aus mehreren zeilen, gebe ich den gesammten cmd code da ein wo jetzt "pause" steht , erhalte ich von vb die meldung das 128 fehler enthalten wären.

    danke schon mal im vorraus
    Process-Klasse.
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Machs doch so:

    VB.NET-Quellcode

    1. Dim befehl As String = "net user" 'Beispiel
    2. Dim p As New Process
    3. p.StartInfo.Arguments = "/D /S /C """ & befehl & " & pause"""
    4. p.StartInfo.FileName = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.SystemX86), "cmd.exe")
    5. 'Bzw. falls du ein 32 Bit OS hast: p.StartInfo.FileName = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "cmd.exe")
    6. p.Start()

    Wobei du 'befehl' natürlich je nach dem den Wert von deinem Befehl zuweisen musst ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kai Weigelt“ () aus folgendem Grund: Code erweitert

    Hmm sehr gut cmd startet nun, jeodch ment cdm der befehlszeile währe zu lang, es ist auch ein sehr großer code was kann ich da machen.

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

    Nachdenken: Hast du nen 32 Bit OS? Dann nimm System.
    Und: Wird als Fehler gemeldet hilft hier niemandem.
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Du könntest mit System.IO eine .bat Datei in einem Tempordner erstellen mit dem inhalt
    der Textbox(Zeilenumbrüche beachten), dann die Batch starten und diese bei Programm-
    schluss wieder löschen. Denke auch an die Unicode<=>ASCII übersetzung.
    Denn z.B. ein " ´ " muss in einer Batch dann so aussehen " ï ".

    DJBasedream schrieb:

    was kann ich da machen.
    Uns die Informationen zukommen lassen, dass wir den Fehler reproduzieren oder erkennen können.
    Die Meldung "Warme Luft" ist da ein wenig zu allgemein.
    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!
    Also was ich wollte ist folgendes, damit man es noch mal genauer hier hat.

    Also ich habe eine software geschrieben, die hat einen install und uninstall button, ich habe beide buttons jeweils mit einer textbox verbunden bzw will ich, und in beiden textboxen ist bereits ein cmd code angegeben, also steht schon drinne bereits.

    und ich möchte nun wenn man zb auf install klickt das dann der code der in der textbox steht im cmd ausgeführt wird.

    Wie kann ich das nun bewirken.

    ps. wie schon eräwhnt der cmd code besteht aus sehr vielen zeilen.

    -------------------------------------------------------------------------------

    Wenn es für dies erste tatsächlich keine möglichkeit gibt, dann möchte ich falls damit nicht gestört, um eine hilfe für eine andere möglichkeit bitten die ich ebenfalls nehmen würde.

    Möglichkeit 2:

    Man klickt auf install, es wird eine cmd datei erstellt, in dieser Datei wird der inhalt von textbox1 geschrieben, dann wird die cmd datei ausgeführt, und nach ausführung wieder entfernt.

    Wie kann ich das bewerkstelligen.


    Verzeiht mir bitte das ich immer fragen stelle, ich kenne mich mit der sprache basic einfahc noch garnicht aus, ich habe mittlerweile nur ganz einfache sachen bis jetzt gelernt, durch code zusammen suchen etc. und rum probieren.

    ich wäre wirklich sehr dankbar für hilfe.
    Anleitung DateiAnhänge

    DJBasedream schrieb:

    wie schon eräwhnt der cmd code besteht aus sehr vielen zeilen.

    verstehe ich richtig: Es handelt sich eiglich um Code, der als Batch-Datei auszuführen wäre?

    Mitte Process-Klasse kannste sone Batch starten, aber ohne Datei die ganzen Batch-Befehle selbst ausführen - k.A., ob das geht, ich weiss jdfs. nicht, wie.

    also wassis dein Problem - eine Batch-Datei zu schreiben?
    Ok der Code ist wirklich lang. In meinem Beispiel habe ich eine .bat erstellt,
    zu den Ressources hinzugefügt, bei Button.click wird der string (aus der bat)in einer
    variable packt und dann mit System.IO im ApplicationStartuppath
    eine install.bat erstellt. Du musst sie dann nur noch starten und wenn alles
    ausgeführt wurde wieder löschen.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim str As String = My.Resources._1
    3. Using Sw As New IO.StreamWriter(Application.StartupPath & "\install.bat")
    4. Sw.Write(str)
    5. Sw.Close()
    6. End Using
    7. End Sub


    mfG

    Derfuhr

    DJBasedream schrieb:

    aber ich poste nur einen gewissen teil des codes
    Wenn da ein nServer mit Werbung kommt, breche ich die Betrachtung sofort ab.
    Wenn Du möchtest, dass Dir geholfen wird, nutze die Dateianhang-Funktion des Forums, da ist die Information nicht verloren, wenn der Werbemensch mal keine Lust hat.
    Wenn Du Interesse am Code von @Derfuhr: hast, mach es besser so:

    VB.NET-Quellcode

    1. System.IO.File.WriteAllText(Application.StartupPath & "\install.bat", My.Resources._1)
    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!
    Und wo im code setzte ich nun textbox1.text ein damit in der bat datei die erstellt wird der code aus der textbox geschrieben wird.

    [edit]

    so habe jetzt den code von dir @RodFromGermany und von @RodFromGermany

    eingesetzt drücke ich nun auf den button install passiert garnichts

    [edit]

    ich korrigiere, die install.bat mit dem gewünschtem inhalt wurde erstellt, aber wird nicht ausgeführt.

    jetzt brauch ich nur noch das sie ausgeführt und wieder gelöscht wird, dann passt es mir.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DJBasedream“ ()

    Ich empfehle dir die Textbox durch eine RichTextBox zu ersetzen,
    Da man in der TextBox auch wenn MultiLine = true ist immer nur
    eine Zeile sieht und in der einer RTB den kompletten Text
    einsehen kann. Du musst nur anstatt den Text aus der .bat in den
    Ressources zu verwenden, den Text der RTB übernehmen. z.B.

    VB.NET-Quellcode

    1. System.IO.File.WriteAllText(Application.StartupPath & "\install.bat", RichTextBox1.Text)


    mfG

    Derfuhr

    Edit: Das die .bat nicht allein startet, dürfte dich eigentlich nicht
    verwundern. Du musst sie mit Process.Start("Pfad zur bat")
    selbst starten.

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