CMD mit Batch Datei öffnen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

🥱...

start "" cmd /k   "echo off & color 1f & title Rumpelheinzchens Prinzessin &echo Ich bin die ganz normal Console, gib Deine  Kommandos ein:"

Öffnet ein blaues ConlsolenFenster mit weißer Schrift und dem Titel Rumpelheinzchens Prinzessin.

Echo off unterdrückt in diesem Fall natürlich nicht die Eingabe sondern lediglich den Prompt.

Alternativ kanst Du matürlich auch den Prompt nach Deinen Bedürfnissen gestalten:

start "" cmd /k   "prompt $D $T Hallo Du da... & color 1f & title alternativer Prompt

...oder "Matrix"- mäßig...:

start "" cmd /k   "prompt $g & color 0a & title Matrixerei "

..."Matrix"- mäßig... mit einer negativfarbigen Begrüßung:

chcp 65001>nul & start "" cmd /k   "prompt $g&color 0a&title Matrixerei mit andersfarbiger Begrüßung&powershell -c write-host -f 0 -b 2 Willkommen in der Matrix "
  • cmd /k hält die Console nach Beendigung eine Batch offen.
  • die gesamte beim Start auszuführende Batch wird in "Gänsefüßchen" als "Einzeiler" an die neugestartete Console übergeben!
  • In Cmd/Batch werden mehrere Befehle durch Ampersand& voneinander getrennt.
  • Egal bei welchem Beispiel, wenn sich in Umlaute oder ander Europäische Zeichen im Text befinden , muss die Zeichencodierung vor dem Aufruf mit chcp 65001 auf UTF8 umgeschaltet werden!
  • Um andersfarbigen Text in die Console zu "mogeln" Missbrauche ich einfach und fies Powershells Inline-Script-funktion (-c) mit write-host.

noch ein Paar Beispiele:

chcp 65001>nul
start "" cmd /k   "prompt ¯\_(o.O)_/¯  &color 6f&title Guckst Du aus der Wäsche  - Console&powershell -c write-host -f 0 -b 14 Was  is....? "

  rem Mehrzeiliger Prompt?  ...wer kann der kann...
start "" cmd /k   "prompt $h /\_/\   ...ähm?$_$c o.o $f miau?$_ $g ^^ $l Was soll Kitty machen?:&title Hello Kitty Consmiaulääää :)&color df "
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
Erzesel  27.04.2020, 17:45

korrektur:

....so gehts nur bei direkter Consoleingabe:

chcp 65001>nul & start "" cmd /k   "prompt $g&color 0a&title Matrixerei mit andersfarbiger Begrüßung&powershell -c write-host -f 0 -b 2 Willkommen in der Matrix "

In einer Batch muss das chcp... in einer eigenen Zeile stehen:

chcp 65001>nul
start "" cmd /k   "prompt $g&color 0a&title Matrixerei mit andersfarbiger Begrüßung&powershell -c write-host -f 0 -b 2 Willkommen in der Matrix "

...ich mache das 35 Jahre und erlebe noch immer Überraschungen...

Erklärung für mitlesende Batchprogrammierer:

In der Console funktioniert es in einer Zeile, weil der Console die Codierung der Eingabe schlicht egal ist.

In der Batch muss chcp erst Umschalten hat jedoch keine Wirkung auf die Befehle in der gleichen Zeile oder im gleichen KlammerBlock... (ähnlich DelayedExpansion)

1
AgentDoppelP 
Fragesteller
 28.04.2020, 10:40

Das funktioniert alles sehr gut, danke, aber das Problem ist, dass wenn ich die Datei dann öffne, dass sich CMD dann automatisch x-mal öffnet. Ich muss dann immer Alt+F4 gedrückt halten, um das zu schließen.

0
Erzesel  28.04.2020, 11:17
@AgentDoppelP

vielleicht solltest Du mal Deine Batch posten. Ich nehme an Du hast irgendwas kopiert ohne zu wissen was Du da tust. ich vermute eine Forkbomb mit einer GotoDchleife?:

!!!nicht ausführen, Forkbomb!!!
chcp 65001>nul
:label
start "" cmd /k   "prompt ¯\_(o.O)_/¯  &color 6f&title Guckst Du aus der Wäsche  - Console&powershell -c write-host -f 0 -b 14 Was  is....? "

goto :label
!!!nicht ausführen, Forkbomb!!!

...start.... wird ausgeführt un das goto springt wieder an den Anfang, start wird ausgeführt... und so weiter bis Du in Fenstern ersäufst....

sowas sollte man nicht tun....🤮🤯😬

0
AgentDoppelP 
Fragesteller
 29.04.2020, 12:34
@Erzesel

Ich habe einfach deine Batch kopiert, aber das ist generell so, dass wenn ich start cmd eingebe, dass CMD dann unendlich oft geöffnet wird

0
AgentDoppelP 
Fragesteller
 29.04.2020, 12:37
@AgentDoppelP

So habe ich es als erstes probiert ohne Hilfe:

@echo off

pause

start cmd

color a

title console

@echo off
0
Erzesel  29.04.2020, 16:14
@AgentDoppelP

Du darfst die Batch nicht cmd.cnd oder cmd.bat nennen!

Ansonsten ändere die Zeile wiefolgt:

start "" cmd.exe /k "...wie oben..."

Wenn Du die Batch cmd... nennst wird diese sich immer wieder selbst aufrufen.

Um ein Consolenkommando ohne Endung aufzurufen durchsucht der Kommandointerpreter zuerst das aktuelle Verzeichnis nach einer startbaren Datei (.exe,.cmd,. Bat,.vbs,.js,.lnk usw.). ...danach alle in der Path-Variable gespeicherten Ordner und startet den erstbesten Treffer!

Man sollte nie einer Batch den Namen eines anderen Programms geben! Lass Dir etwas Kreatives einfallen, wie ___cmd.cmd oder My Cmd.cmd oder was auch immer, sonst ruft sich die Batch immer selbst auf🥴💩🤮

0
AgentDoppelP 
Fragesteller
 04.05.2020, 14:16

@Erzesel danke danke danke habs jetzt verstanden

so hab ichs jetzt gemacht

@echo off


color a


pause


start "" cmd /k   "echo off & color a & title console&echo commands:"


@echo off
1
Erzesel  04.05.2020, 15:28
@AgentDoppelP

Das @echo off ist nur einmal am Anfang der Batch nötig... (schaltet die Anzeige der Befehlszeilen und des Prompt aus)

1

Die Batchdatei wird doch in CMD geöffnet, warum willst du den noch ein Fenster haben?

Ein Computer kann grundsätzlich nichts gleichzeitig machen, aber du kannst in deine Batchdatei die jeweiligen Befehle schreiben und dann wäre es quasi "gleichzeitig".

Das wäre dann vielleicht:

@echo off
color -a
titel "Ich glaube der Befehl hies Titel, oder doch nicht?"

echo ab hier beginnt der Rest des Programms:

lange her, seit dem ich dass letzte mal in der Sprache programmiert habe

hoffe dass es trotzdem hilft

LG

Woher ich das weiß:eigene Erfahrung – Mehrere Jahre Erfahrung mit Computern
Lamanini  27.04.2020, 14:08
Ein Computer kann grundsätzlich nichts gleichzeitig machen

Doch natürlich, mit mehreren Prozessoren geht das z.B. ohne Probleme.

Oder wenn du was auf deiner GraKa laufen lässt, läuft das auch parallel.

1
MRMINEDE  27.04.2020, 14:13
@Lamanini

..... Da kann man nichts mehr hinzufügen, wenn du es genau nimmst, dann ja.

Ich gehe jetzt von den grundsätzen aus. Ein Prozessor/Graka kann nur eine Sache gleichzeitig bearbeiten

0
Lamanini  27.04.2020, 14:14
@MRMINEDE

Nein, eine Graka kann mehrere Sachen gleichzeitig, das ist ja eben die ganze Idee.

1
MRMINEDE  27.04.2020, 14:21
@Lamanini

ok, Schachmatt, ich beziehe mich jetzt nur auf den Prozessor :)

0
Erzesel  27.04.2020, 17:28
Die Batchdatei wird doch in CMD geöffnet, warum willst du den noch ein Fenster haben?

...ähm🤔? Wenn man eine Eingabe-Console mit einem individuellen Prompt,Farbe,Titel usw. starten möchte und nicht jedes Mal von Hand die Gestaltung eingeben möchte?

runHelloKittyConsole.cmd

start "" cmd /k   "prompt $h /\_/\   ...ähm?$_$c o.o $f miau?$_ $g ^^ $l Was soll Kitty machen?:&title Hello Kitty Consmiaulääää :)&color df "

natürlich könnte man die Kommandozeile sogar zum Start von Batches in der Registry verankern.

Man kann auch eine Verknüpfung mit folgender Ziel -Zeile anlegen :

C:\Windows\System32\cmd.exe /k  "prompt $h /\_/\  ...ähm?$_$c o.o $f miau?$_ $g ^^ $l Was soll Kitty machen?:&title Hello Kitty Consmiaulääää :)&color df "

Eine Batch bietet jedoch weit mehr Möglichkeiten.

Um den Start eines neuen Fensters kommt man jedoch nicht vorbei, da eine Batch immer automatisch im selbstschließenden Modus (cmd /c) gestartet wird!

Es gibt immer Dinge, welche manche Leute anders mögen..., davon leben Programmierer....

1
MRMINEDE  27.04.2020, 17:32
@Erzesel

Interesant dass das so auch geht, wusste ich nicht, belehrt zu werden ist immer gut, danke für deinen Kommentar!

0