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

gelöst Eingabe in Datei umleiten lassen (Umweg über Prozedur)

Mitglied: -heny-

-heny- (Level 1) - Jetzt verbinden

10.04.2008, aktualisiert 22:04 Uhr, 7860 Aufrufe, 7 Kommentare

Hallo,

folgender Codeschnipsel sei gegeben:

01.
@echo off 
02.
set /p "TestVariable=Geben Sie einen Wert ein: " 
03.
call :TestProzedur %TestVariable% 
04.
goto :eof 
05.
 
06.
:TestProzedur 
07.
echo %*>> test.txt 
08.
goto :eof 
09.
pause
Prinzipiell soll das Skript eine Eingabe in eine Textdatei umleiten. Das funktioniert auch soweit problemlos. Probleme treten nur auf, wenn die Eingabe alphanumerisch und nur einstellig ist, z.B. "1" oder "a" oder "!". Andere, längere Eingaben wie "11" oder "1test" funktionieren perfekt.

Wenn die Eingabe nun nur aus einem alphanumerischen Zeichen besteht, wird folgender Inhalt in die Textdatei geschrieben:

01.
ECHO ist ausgeschaltet (OFF).
Das kann ja nur daher kommen, dass die Variable nicht existiert. Die Frage ist jetzt nur, warum dieses Problem auftritt. Dass ich eine Abfrage nach der Länge und dem jeweiligen Wert machen kann, ist mir klar, aber ich würde gerne die Problematik an sich begreifen.

Gruß,
heny

PS: Die Lösung via Prozeduraufruf (Sprungmarke) ist gewollt und soll in jedem Fall bestehen bleiben. Sie scheint mit dem fehlerhaften Verhalten auch nichts zu tun zu haben, soweit ich das getestet habe.
Mitglied: gemini
10.04.2008 um 19:02 Uhr
Hallo -heny-,

versuch's mal damit
01.
@echo off 
02.
set /p "TestVariable=Geben Sie einen Wert ein: " 
03.
call :TestProzedur %TestVariable% 
04.
goto :eof 
05.
 
06.
:TestProzedur 
07.
echo %* >> test.txt 
08.
goto :eof 
09.
pause
Hat bei mir keine Fehler erzeugt.

Gruß,
gemini
Bitte warten ..
Mitglied: bastla
10.04.2008 um 19:08 Uhr
Hallo -heny-!

Für einen einzelnen Buchstaben kann ich das Problem nicht nachvollziehen ...

Dass es mit "!" nicht klappt, müsste an einer "DelayedExpansion" liegen, und einstellige Zahlen werden als Kanalangaben interpretiert (eine resultierende Ausgabe zB der Art
01.
2>> test.txt
schreibt natürlich keinen Inhalt in die Datei, da ja kein Fehler aufgetreten ist und daher keine Meldung über STDERROR kommt). Lösung dafür:
01.
(echo %*)>>test.txt
Grüße
bastla

[Edit] Nachtrag: Um Dich auch gegen die unerfreuliche Ausgabe von "ECHO ist ausgeschaltet (OFF)." ein wenig abzusichern (ergibt dann eine Leerzeile):
01.
(echo\%*)>>test.txt
[/Edit]
Bitte warten ..
Mitglied: bastla
10.04.2008 um 19:16 Uhr
@gemini
Wenn das an das Ende der Zeile geschriebene Leerzeichen nicht stört, ist das die bessere Lösung.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
10.04.2008 um 20:29 Uhr
...und noch der allerletzte i-Tüpfelchen:

Wie Du leicht nachvollziehen kannst am CMD-Prompt, haben die Ziffern bei Umleitungen auch spezielle Bedeutung.
Eine 1 ausgeben...
echo 1
1
Ein Eins explizieht unleiten auf den Monitor oder eine Datei...[works as designed]
echo 1>con
ECHO ist eingeschaltet (ON).

So klappt auf dieser Eventualfall mit "echo (1,2,3,4)>irgendeinDevice":
01.
 >>con echo 1 
02.
1
Du kannst also auch schreiben:
01.
... 
02.
:TestProzedur 
03.
>>test.txt echo\%* 
04.
goto :eof
Grüße
Biber
Bitte warten ..
Mitglied: -heny-
10.04.2008 um 20:52 Uhr
Hallo,

danke. Die von euch beschriebenen Lösungen funktionieren beide. Welche ist denn die "bessere" bzw. die, welche man benutzen sollte?

Und von STDERR, STDOUT usw. habe ich absolut keinen Plan, bzw. von Umleitungen allgemein. Ich wusste bis jetzt halt nur, dass ich mit ">" & ">>" bzw. "<" & "<<" eine Ausgabe in eine Textdatei umleiten kann.

Gibt es zu dem gesamten Thema ein Tutorial o.ä.?

Gruß,
heny

[Edit]
Noch etwas, würdet ihr bei einer gewünschten Ausgabeumleitung in eine Textdatei immer z.B. die Klammerung verwenden?
Bsp.: (echo.)>> datei.txt
[/Edit]
Bitte warten ..
Mitglied: bastla
10.04.2008 um 21:42 Uhr
Hallo -heny-!

STDOUT = Standardausgabekanal (Kanal 1) -> Bildschirm (Konsole) = Gerät CON
STDERR = Ausgabekanal für Fehlermeldungen (Kanal 2) -> ebenfalls Bildschirm

... eine Ausgabe in eine Textdatei umleiten kann.
... oder auch zB nach NUL, um sie im "Nichts" verschwinden zu lassen.
Zu Deiner letzten Frage: Klammern sind vor allem dann sinnvoll, wenn Du mehrere Ausgaben hintereinander tätigst, zB
01.
02.
    echo Ueberschrift 
03.
    echo ============ 
04.
    echo\ 
05.
    iecho\ 
06.
)>Liste.txt
Im von Dir angesprochenen Fall würde ich weder Klammern, noch den Punkt (damit gibt's neuerdings Probleme) verwenden, sondern einfach
01.
echo\>>datei.txt
schreiben.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
10.04.2008 um 22:04 Uhr
Moin -heny-,

würdet ihr bei einer gewünschten Ausgabeumleitung in eine Textdatei immer z.B. die Klammerung verwenden

Hmmmjein...eher nein.
Es macht den Code nicht lesbarer (falls man/frau doch mal mehr als Zeile schreibt).

Sinnvoll ist die Echo-Klammerung bei solchen Dirty-Onelinern (auch vom CMD-Prompt), in denen mehr als ein Befehl pro Zeile auftaucht.
Beispiel:
echo Fehler & goto :eof

Für jemanden, der den Code warten muss und auch für die CMD.exe selbst ist dieses eindeutiger:
(echo Fehler) & goto :eof

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Drucker und Scanner
Com Port in Datei Umleiten ?
gelöst Frage von dax4funDrucker und Scanner7 Kommentare

Hallo zusammen, versuche gerade eine Druckanweisung die über COM5 an den Drucker geht abzufangen um noch eine Textzeille hinzuzufügen. ...

Linux
Ps Ausgabe in Datei umleiten
gelöst Frage von Matze1508Linux3 Kommentare

Hallo Zusammen, ich kann mir mit dem Befehl: ps -fC java einen output auf die Konsole ausgeben lassen. Allerdings ...

Batch & Shell
Batch Eingabe in Datei schreiben
gelöst Frage von MedicalAdBatch & Shell2 Kommentare

Hallo Leute, ich habe folgendes Problem, ich möchte ein Batch Programm was nacheinander > Computername, IP Adresse, Aufstellungsort und ...

Microsoft

EXE Datei mit Parametern öffnen (ohne Umweg mit einer Verknüpfung)

Frage von paupau90Microsoft8 Kommentare

Hallo zusammen, ich habe eine EXE Datei und würde diese gerne mit einigen Parametern aufrufen. Ich würde das gerne ...

Neue Wissensbeiträge
Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 45 MinutenMicrosoft

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 18 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 1 TagiOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server25 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

SAN, NAS, DAS
Qnap TS-453S Pro - Anbindung Active Directory
Frage von JuckieSAN, NAS, DAS13 Kommentare

Hallo zusammen, ich habe hier eine Qnap TS-453S Pro die sich mal so absolut gar nicht in das Active ...