Aktiver BatchDatei Befehl senden?

  • VB.NET

Es gibt 35 Antworten in diesem Thema. Der letzte Beitrag () ist von discounter.

    Aktiver BatchDatei Befehl senden?

    Hey Leute,
    kann man vieleicht einer geöffneten batch-datei einen befehl per code senden,
    sodass das CMD also eigentlich die batchdatei diesen dann ausführt?
    Ich hoffe auf gute Antworten

    LG
    Discounter
    ManageMe Minecraft Server Zum schnellen Erstellen und Verwalten von eigenen Minecraft Servern!
    Du kannst mit Process.Start die CMD starten und mit Startinfo.Arguments Argumente Mitgeben, z.B. für Befehle :D
    "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!
    Das weiß ich ja aber das Scribt,Batch was auch immer läuft ja schon!

    @DODO nein das cmd wurde nicht mit process.start geöffnet und sorry mit API kenne ich mich GAR NICHT aus ;(
    ManageMe Minecraft Server Zum schnellen Erstellen und Verwalten von eigenen Minecraft Servern!

    Dodo schrieb:

    ziemlich einfach mit dem StandardInput-Stream

    Geht aber auch nur, wenn da jemand auf einen Input wartet.
    @discounter:
    Vielleicht machst Du aus der Batch ein "richtiges" Programm, da kannste machen, was immer Du willst.
    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!
    Wenn er etwas an die Batch "senden" will, wird die wohl auch ein Input erwarten =)

    @TE: Nunja was erwartest du nun von uns? Dass wir dir API in den Kopf hämmern? Nicht auskennen ist keine Ausrede. Es sollte eher ein Ansporn sein etwas zu lernen was man eben noch nicht kann. Hierzu gibt es hinreichende Lektüre im Internet. Ich bin auch nicht auf die Welt gekommen und konnte API, aber ich konnte es erlernen, zum Großteil mir Learning by doing und Try and Error. Also lesen, probieren, aus Fehlern lernen, besser machen.
    @discounter: Kannst Du die Abläufe vielleicht etwas präziser beschreiben?
    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 ich weiß nicht ob das eine Richtige Batch ist!? Ich habe einen eigenen Minecraftserver und möchte jetzt eben ein PRogramm schreiben in dem ich diesem einen kleinen befehl wie zum beispiel "stop" senden kann.

    @discounter:

    Vielleicht machst Du aus der Batch ein "richtiges" Programm, da kannste machen, was immer Du willst.
    Ich glaube das geht bei Minecraft Server nicht so einfach :)

    Mit API - Kann mir denn jemand zumindest irgend wie ein tutorial geben was in die richtung geht? Ich währe dem jenigen SEHR SEHR dankbar!!
    ManageMe Minecraft Server Zum schnellen Erstellen und Verwalten von eigenen Minecraft Servern!

    discounter schrieb:

    möchte jetzt eben ein PRogramm schreiben in dem ich diesem einen kleinen befehl wie zum beispiel "stop" senden kann.

    Ich hab keine Ahnung was Du vorhast, und von Minecraft noch viel weniger (ich weiss, ist bestimmt eine Bildungslücke), aber einzelne Befehle wie in der Command-Shell kannst Du auch so absetzen:

    VB.NET-Quellcode

    1. ' aero service stoppen
    2. Dim p As New Process
    3. p.StartInfo.Arguments = "/k net stop uxsms"
    4. p.StartInfo.FileName = "cmd.exe"
    5. p.Start()

    Keine Ahnung ob Dir das weiterhilft.Batch Datei genauso über process.Start wie schon genannt ...
    Nun ja da ich glaube das ich das so nicht hinbekomme habe ich es doch mal alles auf den standartinput umgeschrieben aber irgendwie habe ich das gefühl das man einen batch datei nicht mit "process.start" starten kann, denn wenn ich es damit mache öffnet sich das cmd und führt nicht den inhalt der batch datei aus!
    Mei Code sieht jetzt so aus vielicht habe ich ja auch was falsch gemacht?:

    VB.NET-Quellcode

    1. Dim mserver As New Process
    2. mserver.StartInfo.FileName = ServerVerzeichnis
    3. mserver.StartInfo.UseShellExecute = False
    4. mserver.StartInfo.RedirectStandardInput = True
    5. mserver.Start()


    Wo liegt mein Fehler oder geht das so gar nicht?
    ManageMe Minecraft Server Zum schnellen Erstellen und Verwalten von eigenen Minecraft Servern!

    discounter schrieb:

    denn wenn ich es damit mache öffnet sich das cmd und führt nicht den inhalt der batch datei aus!

    Nun, im Zeifelsfall führ die Batch halt mit dem Code von oben aus statt des "net stop uxsms", sollte gehen.

    Das andere müsste ich eh erst nachschauen, schon ein bisschen her dass ich damit gearbeitet habe.

    Edit: mal den MSDN Link mit Beispiel rausgesucht: RedirektStandardInput

    In dem Beispiel statt dem Console.Read Gehampel halt direkt mit einem StreamWriter Deine Befehle in den Stream schreiben (.Autoflush des StreamWriter sollte auf True gesetzt werden).

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Kangaroo“ ()

    Währe der Code dann so richtig:

    VB.NET-Quellcode

    1. Dim mserver As New Process
    2. mserver.StartInfo.FileName = InputBox("Prompt", "Titel", Nothing)
    3. mserver.StartInfo.Arguments = "@ECHO OFF" & vbNewLine & _
    4. "IF /I """"%PROCESSOR_ARCHITECTURE:~-2%""""==""""64"""" """"%ProgramFiles%\Java\jre7\bin\java.exe"""" -Xincgc -Xmx2048M -jar """"craftbukkit.jar""""" & _
    5. "IF /I """"%PROCESSOR_ARCHITECTURE:~-2%""""==""""86"""" java -Xincgc -Xmx2048M -jar """"craftbukkit.jar""""" & _
    6. "PAUSE"
    7. mserver.StartInfo.UseShellExecute = False
    8. mserver.StartInfo.RedirectStandardInput = True
    9. mserver.Start()


    Die vier " stehen sind notwendig da vb ja sonst den string "cutet"!
    ManageMe Minecraft Server Zum schnellen Erstellen und Verwalten von eigenen Minecraft Servern!
    Sry meins war Fehlinformation, die Server Exe meinte ich natürlich nicht, das ja keine Consolen Anwendung. Nein also mit java.exe und mit der Jar Datei, so funktioniert das mit dem RedirectInput.

    Aber was machst du da für komischen grüzen Code mit Echo Off und If Bedingungen?Mensch junge du nutzt VB, wieso da so grüpplige Batch Befehle?? Frag mit VB die Architektur ab und lade die enstrechenden Argumente nach.
    Sorry aber damit kann ich jetzt gar nichts anfangen ;(

    Geht das jetzt überhaubt? - Oder kann man mir mal ein Beispiel geben, denn ich bin jetzt total verwirrt.
    ManageMe Minecraft Server Zum schnellen Erstellen und Verwalten von eigenen Minecraft Servern!

    discounter schrieb:

    Sorry aber damit kann ich jetzt gar nichts anfangen

    Natürlich wird es so laufen wie von Dodo beschrieben:
    - VB Inputbox zur Eingabe benutzen
    - in VB Prozessorarchitektur abfragen
    - Java mit richtigen Argumenten starten

    Falls Du Dich einer Batch - Datei besser auskennst , so
    - schreibe die Batch Datei mit Deinen Befehlen, z.B. in D:\test.bat
    - teste erstmal so in der Commandshell (cmd.exe) aus ob es funktioniert

    Verwende folgenden Code zum Ausführen

    VB.NET-Quellcode

    1. Dim info As New ProcessStartInfo
    2. info.FileName = "cmd.exe"
    3. info.Arguments = "/k d:\test.bat" ' zum Testen: Console bleibt angezeigt
    4. ' info.Arguments = "/c d:\test.bat" ' wenn Test ok war: Console beendet sich nach Ausführung
    5. 'info.WindowStyle = ProcessWindowStyle.Hidden ' zum verbergen des Fensters wenn Test OK
    6. ' starten der Batch Datei
    7. Process.Start(info)

    Es gibt halt immer einige Alternativen ...
    Ich hab den Code jetzt einfach mal so gut wie übernommen:

    VB.NET-Quellcode

    1. Dim info As New ProcessStartInfo
    2. info.FileName = "cmd.exe"
    3. info.Arguments = "/k C:\Users\Discounterl\Desktop\Minecraft Server Test\run.bat" ' zum Testen: Console bleibt angezeigt
    4. ' info.Arguments = "/c d:\test.bat" ' wenn Test ok war: Console beendet sich nach Ausführung
    5. 'info.WindowStyle = ProcessWindowStyle.Hidden ' zum verbergen des Fensters wenn Test OK
    6. ' starten der Batch Datei
    7. Process.Start(info)


    Zunächstmal das CMD öffnet sich schließt sich aber sofort wieder was ja eigentlich nicht sein sollte. Und dann passiert etwas was ich so gar nicht verstehe nämlich minecraft selber startet sich nicht er server! - Wie kann das? - die Pfad zur Patch ist definiitiv richtig da der Pfad auch mehrmal geprüft.
    ManageMe Minecraft Server Zum schnellen Erstellen und Verwalten von eigenen Minecraft Servern!