Eigene Befehle im Windows Terminal?
Ist es möglich eigene Befehle zu erstellen die man im Termin ausführen kann?
Wie z.b
"Run bot" und dann geht es in Ordner xy und führt z.b. eine Python Datei aus, damit man nicht immer selber denn Ordner im Terminal öffnen muss und dann noch "Python main.py" eingeben muss
2 Antworten
Ja, natürlich!
Die "Befehle" sind einfach nur Programme die als Dateien irgendwo auf der Festplatte liegen. Die werden dann gestartet wenn man den Dateinamen (ohne Endung) eingibt. Was man dahinter schreibt wird dem Programm dann als Parameter übergeben.
Neben Ausführbaren Dateien EXE oder früher oft COM kann man auch BAT Dateien schreiben.
BAT Dateien sind einfache Text Dateien die eine Liste von Dingen enthält die dann im terminal "reingetippt" werden. Man kann also eine Reihe von "Befehlen" selber tippen oder die in eine BAT Datei speichern und diese dann ausführen.
Bei DOS gab es die "AUTOEXEC.BAT", die wurde gestartet wenn DOS geladen war. Das hat dem User dann erspart alle Einstellungen nach dem Hochfahren immer wieder neu selber einzugeben.
Hier konnte man zum Beispiel "win" rein schreiben so dass nach dem Hochfahren direkt Windows gestartet wurde. Das passierte früher normalerweise nicht automatisch, Windows war ein Grafischer Aufsatz für DOS und kein eigenes Betriebssytem.
Gibt man was ein und drückt Enter, dann durchsucht Windows bestimmte Ordner nach diesem Dateinamen. Unter anderem z.B. System32. Man kann da auch eigene Ordner in die Suche einstellen wo man dann seine eigenen Programme drin aufhebt.
P.S.:
Deine Eigenen Ordner immer am Schluss der PATH Umgebungsvariable anbringen. Dann werden die Systemsachen nicht nur ein paar millisekunden schneller gefunden, also Dein Ordner nicht immer wieder durchsucht sondern das stellt auch sicher, dass gleichnamige Systemsachen immer noch aufgerufen werden können.
Wie kann ich dafür sorgen daß der Befehl nur einmal aufgeführt wird und wie kann ich 2 Befehle nach einander ausführen lassen?
Wenn Du was eingibst und Entre drückst, wird das nur ein mal ausgeführt.
Sachen nacheinander macht die Batch Datei, also die *.BAT die Du anlegst.
Jede Zeile wird behandelt als wenn Du die selber in das Terminal eingetippt hättest und Enter drückst.
Du kannst ja mal Spaßeshalber eine "Test.BAT" anlegen und da schreibst Du rein
echo Hallo
echo Welt
Tippst Du dann test in das Terminal und drückst Enter, schreibt der dann erst "Hallo" und dann als zweiter Befehl wird "Welt" geschrieben. Das echo dient dazu das was dahinter steht zu schreiben. Damit können BAT Dateien dann irgendwelche Informationen an den User der die aufgerufen hat melden.
Wie kann ich im Terminal sagen das es ein anderen Ordner öffen soll?
Dazu habe ich Dir den Link geschickt:
https://www.java.com/de/download/help/path_de.html
Da steht drin wie Du z.B. unter Win10 diese Systemvariable anschaust und änderst.
Da trägst Du dann den Ordner (kompletter Pfad) ein wo Dein Zeug drin ist.
Den aber am Ende einfügen damit der nicht am Anfang durchsucht wird und ggf gleichnamige Systemsachen dann immer noch funktionieren und nicht Deine Sachen aufgerufen werden.
Da gibt es aber folgendes Problem
Ich habe 2 Bots die beiden mit "Python (Dateiname).py" gestartet werden aber die Bots sind in unterschiedlichen Ordnern weil beide viele Zusatz Dateien habe und nicht nur die Main Datei dementsprechend kann ich die nicht in ein Ordner packen und kann ja auch nur ein PATH festlegen, deswegen muss ich dem Terminal irgendwie sagen das es in Ordner xy gehen muss um die Datei zu starten
Verstehst du was ich meine?
Ja, das kann die BAT Datei machen. Da schreibst Du dann die Befehlsfolge rein die Du selber bei CMD eintippen würdest um das per Hand zu starten.
Wie gesagt, eine BAT Datei ist dann genau so wie selber tippen. Jede Zeile ist wie selber getippt + Enter, nur "sofort" und ohne selber tippseln.
und was muss ich eingeben um z.b Ordner D:\PythonBots\DCB zu öffnen um da dann "python main.py" ausführen zu lassen
Genau das selbe was Du auch per Hand in das Terminal rein tippen würdest
Ich weiß ja aber nicht wie das geht, normaler weiße klicke ich bei meinem Code Editor auf Play und dann startet es die main.py aber dafür muss ich immer denn Tab mit der main.py öffnen und das ist nervig wenn man um die 40 bis 50 Dateien in dem Ordner hat
Dann lerne die terminalbefehle
Wenn Du in C:\Bla\blub\dasda.exe starten willst, dann schreibst Du das auch genau so ins Terminal rein.
Wie mache ich das mit dem Benutzer Name?
Weil ich habe ein Leerzeichen im Windows Benutzer Name und da denkt es das alles vor dem Leerzeichen ein Befehl ist
Die Befehle die dir in der konsole zur verfügung stehen sind einfach nur programme die in %systemroot%/System32/ liegen. Dort kannst du natürlich auch eigene programme und scripte Speichern. Der Befehl zum ausführen ist dann einfach nur der Dateiname.
Und hier nach ein bisschen googeln eine ausführliche Anleitung wie man die Umgebungsvariable wo das System die "befehle" sucht bearbeitet:
https://www.java.com/de/download/help/path_de.html
Da kannst Du dann den Ordner wo Du Deine eigenen programme drin hast mit einbinden.
Damit Du Dir das "Python main.py" sparen kannst, erstellst Du dann in diesem Fall eine Textdatei die main.BAT heißt. Und in der steht dann das "Python main.py".
Gibst Du also main ein, dann wird die main.BAT gestartet und die startet dann python mit der main.py als Parameter.
Aber pass auf, dass Du keine Namen von anderen existierenden Befehlen verwendest. Sonst löst Du dann diesen Befehl aus oder irgendwas das den Befehl braucht startet dann Dein Programm.
Du kannst das wirkungsvoll verhindern in dem Du da einen Zusatz dran machst wie z.B. "mymain"