progfreund
Goto Top

Batch Variablensetzung für echo ohne Zeilenumbruch -Fragen zum Code

Hallo. face-smile

@bastla hat folgenden Code geschrieben:
set/p=<nul>leer4.txt

Ich habe dazu noch Fragen:
Wie heißt der Name der Variablen, in die nul geleitet wird bzw. gibt es dort eine Variable?

Der Code ist ohne Leerzeichen, ich nehme an wegen der Variablensetzung; gibt es eine Regel zum Setzen von Leerzeichen:
@Biber hat in seinem Batch Tutorial 2 (Workshop Batch for Runaways - Part II - Ein bisschen Handwerkszeug) ziemlich vorne die Ausgabeumleitung mit dir /s Pfad >nul als funktionierend und dir /s Pfad>nul als nicht
funktionierend aufgeführt.

Wenn man eine Zeile ohne Zeilenumbruch ausgeben möchte, verlangt echo ein CarriageReturn. Ich habe von Biber den Kommentar gelesen, dass
es ein Mythos ist, den Rückgabewert von REM zu verwenden (Per Batch (Text-)Datei ohne Text erzeugen). Dennoch wird zum Beispiel Pfad/nul (nicht Pfad\nul) bei älteren OS Versionen verwendet,
sodass ich fragen möchte: was genau ist nul (im Kontext von Pfad/nul) und was ist nul bei Ausgabeumleitungen, wo findet man es, wird es irgendwie
angelegt?

Ich würde mich über eine Antwort freuen. Wenn noch wer weitere Empfehlungen hat, schreibt sie.

LG

Content-ID: 169184

Url: https://administrator.de/contentid/169184

Ausgedruckt am: 25.11.2024 um 15:11 Uhr

bastla
bastla 05.07.2011 um 21:48:10 Uhr
Goto Top
Hallo Progfreund!
Wie heißt der Name der Variablen, in die nul geleitet wird bzw. gibt es dort eine Variable?
Es gibt keine Variable, weil die Eingabe ohnehin uninteressant ist - es geht nur darum, die Ausgabe (hier in eine Datei "leer4.txt") ohne abschließendes CrLf zu erzeugen.
... die Ausgabeumleitung mit dir /s Pfad >nul als funktionierend und dir /s Pfad>nul als nicht funktionierend aufgeführt.
Ein "dir /s" finde ich im gesamten Tutorial nicht ...
gibt es eine Regel zum Setzen von Leerzeichen
Als Grundregel: Je weniger, desto gut - zu wenige bringt's aber auch nicht ... face-wink
Ansonsten: Bitte einen konkreten Fall nennen!

dir /s Pfad>nul
oder
dir /s Pfad >nul
ist übrigens egal - die Ausgabe "verwschwindet", soferne es den Pfad gibt, ohnehin, und der Errorlevel wird unabhängig davon gesetzt - allerdings würde ich
dir /s Pfad>nul 2>nul
verwenden, da so auch die Fehlermeldung bei nicht existentem Pfad unterdrückt wird.
Hinsichtlich der Ausgabeumleitungen bin ich übrigens schon vor längerer Zeit dazu übergegangen, die Umleitung dem Befehl voranzustellen, also etwa:
>Textdatei.txt echo %Wert%
Abgesehen von der damit entfallenden Frage nach zusätzlichen Leerzeichen nach %Wert% hat das den Nebeneffekt, dass auch ein Inhalt der Variablen %Wert% von 2 korrekt in der Datei landet, was bei
echo %Wert%>Textdatei.txt
nicht der Fall wäre, da ja dann
echo 2>Textdatei.txt
daraus entstünde, was zu einem "echo" ohne Text (und daher der Ausgabe
ECHO ist eingeschaltet (ON).
auf den Kanal 1 = STDOUT) und einer leeren "Textdatei.txt" führt - in diese würde ja eine Fehlermeldung auf Kanal 2 = STDERR geschrieben werden, der Befehl erzeugt aber keinen Fehler und daher keine Meldung.

Ach ja: Die Schreibweise
echo %Wert% >Textdatei.txt
wäre zwar gegen die angesprochene Eventualität abgesichert, gibt aber das Leerzeichen nach %Wert% ebenfalls in die Datei aus (womit wir wieder bei "Je weniger, desto gut - zu wenige bringt's aber auch nicht" wären) ...

Grüße
bastla
Progfreund
Progfreund 06.07.2011 um 00:09:26 Uhr
Goto Top
Zitat von @bastla:
> ... die Ausgabeumleitung mit dir /s Pfad >nul als funktionierend und dir /s Pfad>nul als nicht funktionierend
aufgeführt.
Ein "dir /s" finde ich im gesamten Tutorial nicht ...

Sorry, hier der Code (dir /b):
>dir /b *.lo?
resolve.log
>dir /b *.log >nul
(keine Rückmeldung auf dem Bildschirm)
>dir /b *.lod
Datei nicht gefunden
>dir /b *.lod>nul
Datei nicht gefunden
>dir /b *.lod>nul 2>nul
bastla
bastla 06.07.2011 um 00:16:51 Uhr
Goto Top
Hallo Progfreund!

So what?

Mit den Leerzeichen hat das nix zu tun - es wird nur demonstriert, was ich oben schon angesprochen habe: "Normale" Ausgaben auf Kanal 1 (ohne Umleitung Anzeige in der Konsole/auf dem Bildschirm), Fehlermeldungen auf Kanal 2 ...

Grüße
bastla
Progfreund
Progfreund 06.07.2011 um 00:19:18 Uhr
Goto Top
Danke für deine Antwort und Klärung der Fragen. face-smile

LG