CMD: Unterschiede bei cmd Dateien in der Ausführung
Hallo zusammen
Ich habe gerade ein kleines Verständnisproblem.
Durch ein Powershell Skript habe ich mir etliche .cmd Dateien erstellen lassen, mit folgendem Inhalt:
Wenn ich diese ausführe passiert genau nix.
(Ok, die cmd blitzt kurz auf und verschwindet direkt wieder ohne etwas zu machen)
Wenn ich die Datei von Hand erstelle, und den gleichen Befehl eintrage, dann werde ich nach meinem Passwort gefragt und die Applikation startet.
Wo genau ist der Unterschied zwischen einer manuell und Skript erzeugten cmd Datei?
Was mache ich falsch?
Danke im voraus
Ralf
Ich habe gerade ein kleines Verständnisproblem.
Durch ein Powershell Skript habe ich mir etliche .cmd Dateien erstellen lassen, mit folgendem Inhalt:
@echo off
runas /user:dom.de\admin.xxx"C:\Program Files (x86)\xxx\yyy\zzz.exe"
(Ok, die cmd blitzt kurz auf und verschwindet direkt wieder ohne etwas zu machen)
Wenn ich die Datei von Hand erstelle, und den gleichen Befehl eintrage, dann werde ich nach meinem Passwort gefragt und die Applikation startet.
Wo genau ist der Unterschied zwischen einer manuell und Skript erzeugten cmd Datei?
Was mache ich falsch?
Danke im voraus
Ralf
10 Antworten
- LÖSUNG emeriks schreibt am 27.03.2018 um 09:08:37 Uhr
- LÖSUNG SlainteMhath schreibt am 27.03.2018 um 09:08:38 Uhr
- LÖSUNG AndreasHoster schreibt am 27.03.2018 um 09:27:25 Uhr
- LÖSUNG ralfkausk schreibt am 27.03.2018 um 10:51:37 Uhr
- LÖSUNG emeriks schreibt am 27.03.2018 um 11:03:21 Uhr
- LÖSUNG emeriks schreibt am 27.03.2018 um 11:04:48 Uhr
- LÖSUNG NetzwerkDude schreibt am 27.03.2018 um 11:13:59 Uhr
- LÖSUNG ralfkausk schreibt am 27.03.2018 um 12:42:23 Uhr
- LÖSUNG AndreasHoster schreibt am 27.03.2018 um 14:19:57 Uhr
- LÖSUNG ralfkausk schreibt am 27.03.2018 um 12:42:23 Uhr
- LÖSUNG Apophis schreibt am 27.03.2018 um 11:04:00 Uhr
LÖSUNG 27.03.2018, aktualisiert um 09:09 Uhr
LÖSUNG 27.03.2018, aktualisiert um 09:09 Uhr
LÖSUNG 27.03.2018 um 09:27 Uhr
LÖSUNG 27.03.2018 um 10:51 Uhr
Vielen Dank für die Lösungsvorschläge, aber, da gab es wohl einen Fehler als ich die Originaldaten unkenntlich gemacht habe.
Die Befehlszeilen sind 100% korrekt.
Hinter dem admin.xxx kommt est ein Leerzeichen, bevor es mit der Pfadangabe weitergeht.
Ich habe geade noch einen kleinen Test hinterhergeschoben, und jetzt bin ich noch verwirrter.
Ich habe die Skript genreierte Datei etwas geändert.
1. Aus @echo off wurde @echo on
2. habe ich pause ans Ende gesetzt
Wenn ich nun diese Datei mit einem Doppelklick starte passiert ... nix
Wie zuvor blitzt die CMD kurz auf und verschwindet direkt wieder ohne etwas zu machen
Wenn ich nun den Inhalt dieser, generierten, Datei in eine händisch angelegt Datei übertrage und diese ausführe, dann passiert genau was passieren soll. Es öffnet sich eine CMD Konsole und fragt nach dem Passwort für das hinterlegt Adminkonto!
Die Befehlszeilen sind 100% korrekt.
Hinter dem admin.xxx kommt est ein Leerzeichen, bevor es mit der Pfadangabe weitergeht.
Ich habe geade noch einen kleinen Test hinterhergeschoben, und jetzt bin ich noch verwirrter.
Ich habe die Skript genreierte Datei etwas geändert.
1. Aus @echo off wurde @echo on
2. habe ich pause ans Ende gesetzt
Wenn ich nun diese Datei mit einem Doppelklick starte passiert ... nix
Wie zuvor blitzt die CMD kurz auf und verschwindet direkt wieder ohne etwas zu machen
Wenn ich nun den Inhalt dieser, generierten, Datei in eine händisch angelegt Datei übertrage und diese ausführe, dann passiert genau was passieren soll. Es öffnet sich eine CMD Konsole und fragt nach dem Passwort für das hinterlegt Adminkonto!
LÖSUNG 27.03.2018 um 11:03 Uhr
LÖSUNG 27.03.2018 um 11:04 Uhr
LÖSUNG 27.03.2018, aktualisiert um 11:04 Uhr
LÖSUNG 27.03.2018 um 11:13 Uhr
Die Frage ist: Wie generiest du die .cmds in Powershell?
Mit dem cmdlet "Out-File" kann man mit dem Parameter -encoding, überraschung, encoding auswählen
siehe hier:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Das Problem ist das die alte Kommandozeile einen legasthenischen touch hat
und nicht alle encodings versteht - z.B. bist du mit ASCII auf der sicheren seite, während UFT8/32 problematsich ist
Mit dem cmdlet "Out-File" kann man mit dem Parameter -encoding, überraschung, encoding auswählen
siehe hier:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Das Problem ist das die alte Kommandozeile einen legasthenischen touch hat
LÖSUNG 27.03.2018 um 12:42 Uhr
Die Kodierung ist des Rätsels Lösung
Ich habe den Lösungsvorschlag von NetzwerDude aufgegriffen, und die Ausgabe in die Datei auf "Out-File -Encoding ascii" umgestellt.
Jetzt funktioniert es genau wie es soll.
Noch ein Hinweis:
Ein Versuch mit "Out-File -Encoding utf8" funktioniert bedingt.
In der 1. Zeile steht ein "@echo off"
Damit gibt es aber noch Probleme.
Das Skript startet, meckert wegen obskurer Sonderzeichen ('∩╗┐@echo'), läuft aber weiter und würde funktionieren.
Ist aber nicht so schön, weshalb ich dann lieber mit "ascii" kodiere.
Vielen Dank an alle für eure Unterstützung
Ich habe den Lösungsvorschlag von NetzwerDude aufgegriffen, und die Ausgabe in die Datei auf "Out-File -Encoding ascii" umgestellt.
Jetzt funktioniert es genau wie es soll.
Noch ein Hinweis:
Ein Versuch mit "Out-File -Encoding utf8" funktioniert bedingt.
In der 1. Zeile steht ein "@echo off"
Damit gibt es aber noch Probleme.
Das Skript startet, meckert wegen obskurer Sonderzeichen ('∩╗┐@echo'), läuft aber weiter und würde funktionieren.
Ist aber nicht so schön, weshalb ich dann lieber mit "ascii" kodiere.
Vielen Dank an alle für eure Unterstützung
LÖSUNG 27.03.2018 um 14:19 Uhr
Das sind keine obskuren Sonderzeichen, sondern das ist UTF8 mit BOM.
BOM = Byte Order Mark
Siehe auch https://de.wikipedia.org/wiki/Byte_Order_Mark
Dient dazu, das das System erkennen kann, ob es Big- oder Little-Endian kodiert ist.
Das die Kommandozeile damit nicht kann, aber Powershell es im Standard benutzt, ist halt typisch MS.
BOM = Byte Order Mark
Siehe auch https://de.wikipedia.org/wiki/Byte_Order_Mark
Dient dazu, das das System erkennen kann, ob es Big- oder Little-Endian kodiert ist.
Das die Kommandozeile damit nicht kann, aber Powershell es im Standard benutzt, ist halt typisch MS.