Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

ECHO. (Zeilenvorschub) funktioniert nicht

Tipp Entwicklung Batch & Shell

Mitglied: Friemler

Friemler (Level 2) - Jetzt verbinden

19.08.2010, aktualisiert 20.08.2010, 13095 Aufrufe, 5 Kommentare

Der Titel des Tipps mag für alte Batch-Hasen seltsam erscheinen, aber lest erst mal weiter.

Ich habe mich heute wieder mal ins Batch-Skripting gestürzt und dabei einen lustigen Effekt entdeckt.

Ich entwickelte unter Windows 7 ein Batch-Skript, das ich auf dem Desktop abgespeichert hatte. Editor- und Browserfenster waren auf dem Hauptbildschirm geöffnet, ein CMD-Fenster und die Skriptdatei lagen auf dem Zweitmonitor auf dem Desktop. Da das Skript Parameter brauchte, wechselte ich im CMD-Fenster ins Verzeichnis %USERPROFILE%\Desktop und startete das Skript von dort.

Irgendwann baute ich einen ECHO.-Befehl ins Skript ein (Zeilenvorschub auf dem Bildschirm erzeugen). Bei Start des Skripts erschien die Fehlermeldung "Der Befehl "echo." ist entweder falsch geschrieben oder konnte nicht gefunden werden." Nanu? Seltsam war auch, das ECHO; noch funktionierte.

Ich stellte fest, daß das Skript nur fehlerfrei lief, wenn ich es in ein anderes Verzeichnis kopierte. Häh?

Des Rätsels Lösung war ebenso trivial wie verwirrend: Bei irgendeinem vorhergehenden Lauf des Skripts hatte ich wohl einen dicken Fehler im Code und auf dem Desktop (verdeckt durch Editor- und Browserfenster auf dem Hauptbildschirm) lagen Dateien mit Namen wie echo, dir, setlocal, usw. Als ich die Datei echo löschte, funktionierte mein Skript auch wieder ohne Fehlermeldung!

Soweit ich weiß, durchsucht der Befehlsinterpreter vor Ausführung eines Kommandos zuerst seine Liste der internen Befehle (dir, echo, set, usw.), dann das aktuelle Verzeichnis und dann die Verzeichnisse aus der PATH-Variablen. Hat er dann das Kommando noch nicht gefunden, gibt es obige Fehlermeldung. Bei ECHO. ist das anscheinend anders.

Übrigens: Eine Datei mit Namen ECHO z.B. ins System32-Verzeichnis (Bestandteil der PATH-Variablen) zu kopieren, führt nicht zu dem geschilderten Effekt. Sie muss im aktuellen Verzeichnis liegen. Das Batch-Skript kann aber auch in einem anderen Verzeichnis liegen und mit seinem vollständigen Pfad gestartet werden. Einen Kollegen beim Batch-Skripten zur Verzweiflung treiben ist also nicht drin .

Gruß
Friemler
Mitglied: pieh-ejdsch
22.08.2010 um 00:01 Uhr
Hi Friemler,

Standartmässige Befehle lauten ja auch nicht echo. oder XYZ oder set.

das liegt dann wohl daran, dass zuerst in der aktuellen Umgebung (wobei ja auch der Aktuelle Pfad zu der aktuellen Umgebung zählt) durchsucht wird und wenn eine Datei oder ein Ordner mit gleichen Namen in dieser Umgebung
( =Umgebungsvariable %CD% ) Vorhanden ist wird diese Datei, wenn sie eine Extension hat, versucht mit dem Standartprogramm zu öffnen.
Gibt es Kein Programm, welches die Datei mit der Passenden Extension Öffnen kann - kommt eine Meldung
"Die folgende Datei kann nicht geöffent werden"

Ist ein Programm für die Datei-Endung zum standartmäsigen Öffnen Registriert wird die Datei mit diesem Programm geöffnet oder versucht zu öffnen.

Wenn die Datei Keinen . (Punkt) oder als letztes Zeichen einen Punkt hat, dann kommt es zu dieser Meldung:
"Der Befehl "XYZ" ist entweder falsch geschrieben oder konnte nicht gefunden werden"

Ein Ordner kann man in der CMD nur mit
explorer "Ordner"
anzeigen oder
cd "Ordner"
cd /d"Ordner"
wechseln.

In dem Sinne Braucht Dein Batch nur in ein Verzeichnis zu wechseln wo eine Datei/Ornder den selben Namen des Falschgeschriebenen Befehls hat ("ECHO." gibts ja auch als Solchen Befehl nicht - es wird ja nur der Punkt als Platzhalter verwendet) und schon fasst dieser in die Grütze.
Übrigens:.... Sie muss im aktuellen Verzeichnis liegen....
wechsle (reicht auch im Batch) mit
cd %windir%\system32
in das Verzeichnis und führe von dort den PsuedoBefehl
echo.
aus - dann fasst er auch in die Grütze wenn dort eine Datei/Ornder namens
echo.
vorhanden ist.

oder als eine Zeile zur kompletten Übersetzung geht es auch so
%windir%\system32\echo.
vllt mal mit anderen Platzhaltern wie \ / : probieren...

Gruß Phil
Bitte warten ..
Mitglied: Friemler
22.08.2010 um 02:07 Uhr
Hallo Phil,

was ich seltsam finde ist, das der Befehlsinterpreter bei einem ECHO. (zur Erzeugung eines Zeilenvorschubs) überhaupt anfängt, im aktuellen Verzeichnis nach einer Datei zu suchen. Wenn es dort keine Datei echo (ohne Punkt) gibt, erkennt er dann doch, was man eigentlich vor hat (den Zeilenvorschub erzeugen) und durchsucht nicht mehr die Verzeichnisse aus der PATH-Variablen.

Wenn man eine Datei dir.exe im aktuellen Verzeichnis anlegt, kommt der Befehlsinterpreter ja auch nicht auf die Idee, bei Eingabe von DIR diese Datei auszuführen, dazu kann man ihn nur durch Eingabe von DIR.EXE zwingen.

Im Nachhinein habe ich noch festgestellt, daß, wenn ich eine Datei echo.exe, echo.com, echo.bat oder echo.cmd im aktuellen Verzeichnis anlege, ECHO. ganz normal funktioniert. Der Fehler tritt wirklich nur bei einer Datei namens echo auf.

Die Möglichkeit, mit ECHO. oder ECHO; einen Zeilenvorschub zu erzeugen, gibt es ja schon seit DOS. Wenn ich einen Kommando-Parser programmieren würde, würde ich diese Sonderformen des ECHO-Befehls in die Menge der bekannten Befehle integrieren und nicht einen Code schreiben, der zuerst den Datenträger nach einer Datei namens echo durchsucht, auf echo.exe, echo.com, echo.bat und echo.cmd aber nicht anspringt und dann auch noch die irreführende Meldung anzeigt, der Befehl könne nicht gefunden werden oder sei falsch geschrieben.

Eine Datei mit Namen echo. (mit Punkt) anzulegen, war mir übrigens bei Tests weder mit dem Explorer (Rechtsklick auf den Desktop->Neu->Textdokument, als Name echo. eintippen) noch mit der Konsole (copy con echo.) möglich. Folgt nach dem Punkt nichts, wird er einfach abgeschnitten (ist ja auch durchaus sinnvoll).

Das man das aktuelle Verzeichnis mit einem CD-Befehl ändert ist ja klar. Also wird der Befehlsinterpreter bei seiner Suche nach ausführbaren Dateien auch in dem neuen Verzeichnis suchen.

Gruß
Friemler
Bitte warten ..
Mitglied: 60730
24.08.2010 um 13:44 Uhr
Moin,

Wenn man eine Datei dir.exe im aktuellen Verzeichnis anlegt, kommt der Befehlsinterpreter ja auch nicht auf die Idee
Ja - aber wenn du vorher eine Datei echo. angelegt hast, ist der Vergleich mit dir.exe etwas daneben.
denn dir. ist das gleiche - wie echo. und bringt auch das gleiche Ergebnis.

Das man beim "klickibunti" immer ein vorher.nachher (prefix.suffix) eingeben muß - das ist auch älter und sinnvoll

btw: der rechtklickibunti neue datei ist eh sehr speziell - versuch mal eine neue leere "irgendwas ausser txt" Datei anzulegen und benamse die dann gleich in .txt um.....

Bei einer wav Datei siehst du dann folgenden Inhalt in Notepad:
RIFF2 WAVEfmt    "V "V   ( fact data

Man muß also immer wissen, was man eigentlich will und wenn man genau das macht - passiert auch das, was man haben möchte ;.-)

Gruß
Bitte warten ..
Mitglied: jeb-the-batcher
26.08.2010 um 17:47 Uhr
Hi,

allgemein gilt (XP/Vista)

Schlagen fehl wenn eine Datei echo. oder echo[ ... existiert (Dateioperation)
01.
echo. 
02.
echo[ 
03.
echo] 
04.
echo+
Die beiden gehen auch theoretisch
01.
echo\ 
02.
echo:
Schlagen aber fehl wenn my.bat im aktuellen Verzeichnis liegt (Dateioperation)
01.
echo\..\my.bat 
02.
echo:\..\my.bat
Die drei sehen an sich sehr gut aus
01.
echo/ 
02.
echo, 
03.
echo;
Scheitern aber bei (zeigt die Hilfe an)
01.
echo/? 
02.
echo,/? 
03.
echo;/?
Bleibt der etwas unschön wirkende echo(, scheint aber der einzige zu sein der immer klappt
01.
echo(
Vielleicht findet es ja jemand hilfreich
jeb
Bitte warten ..
Mitglied: Ben.Blake.79
08.07.2016 um 07:15 Uhr
Den Spaß hatte ich auch, mit
01.
type xxx.yyy > echo.
und hab erstmal gerätselt bis ich den Thread hier gefunden hab...
Bitte warten ..
Ähnliche Inhalte
Sicherheitsgrundlagen
RAID, Datenschutz und wie das mit den Bits so funktioniert
Erfahrungsbericht von SamvanRattSicherheitsgrundlagen16 Kommentare

Das ist keine Anleitung sondern ein Erfahrungsbericht aus einer Schulung die ich zum Thema Datenrecovery im SAN Umfeld gehalten ...

Windows 10
Windows 10 - WSUS-Updaterollback funktioniert nicht
Erfahrungsbericht von DerWoWussteWindows 1020 Kommentare

und der nächste Bug in Win10 Wenn Ihr auf dem WSUS ein Update zur Deinstallation freigebt, dann wird es ...

Windows 10
Windows 10 Cortana funktioniert nicht, Systemapps auch nicht
Erfahrungsbericht von 125674Windows 10

Erst gestern ist es mir passiert, dass auf einem Domäne Computer mit einem frisch installierten Windows 10 die Windows ...

Netzwerke
FritzBox VPN funktioniert zwar, jedoch kein Internetzugriff
Tipp von pelzfruchtNetzwerke1 Kommentar

Moin, Da Ich denke dass der VPN Server der FritzBox für mich reicht, und schneller eingerichtet ist als der ...

Neue Wissensbeiträge
Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 7 StundenLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 2 TagenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Heiß diskutierte Inhalte
Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...