ripued
Goto Top

Variable mit Zahl in Text-Datei umleiten - fehlerhaftes Leerzeichen?

Hallo, ich würde gerne eine Variable, welche zuvor in einem komplexeren Skript mit einer einstelligen Zahl gesetzt wird, in eine Text-Datei umleiten.
Leider wird dabei aus mir nicht ersichtlichen Gründen ein Leerzeichen gesetzt, so dass für eine 4 " 4" umgeleitet wird und ich die Fehlermeldung bzw. Hinweis erhalte, dass Echo eingeschaltet sei.

set zt=4
echo.%zt%>C:\Test\test.txt
echo %zt%>C:\Test\test2.txt
pause

Die erste Umleitung mit einem Punkt hinter Echo scheint zwar zu funktionieren, allerdings sieht das was man bei der Ausführung sieht, dennoch unheimlich aus: echo.41>C:\Temp\teste2.txt
Irgendwie fügt der noch eine 1 hinzu, vermutlich ist für den Standard-Output sowie die 2 für die Error-Ausgabe wäre.

Was wäre eine saubere Lösung, um diese Variable mit Zahl vernünftig umzuleiten?

Content-Key: 519944

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

Printed on: April 27, 2024 at 02:04 o'clock

Member: Bitboy
Solution Bitboy Nov 28, 2019 at 12:43:25 (UTC)
Goto Top
Hi,

eigentlich mus es so klappen. Sicher, dass zwischen echo und %zt% nicht 2 Leerzeichen sind?

@echo OFF
set zt=4
echo %zt% >C:\Temp\test2.txt
pause

Grüße
Mitglied: 141965
Solution 141965 Nov 28, 2019 updated at 12:51:50 (UTC)
Goto Top
Umleitungen sollte man best practice bei unbekannten Daten immer vor die Ausgabe schreiben denn Zahlen direkt vor der Umleitung führen dazu das Batch denkt man wollte z.B. bei einer 2 StdErr oder eben einen anderen Kanal umleiten
https://www.robvanderwoude.com/redirection.php
set "zt=4"  
>"C:\Test\test.txt" echo.%zt%  
pause
Member: RIPUED
RIPUED Nov 28, 2019 at 12:53:52 (UTC)
Goto Top
Tatsächlich geht es mit deinem Skript, wenn man vor dem > Zeichen das Leerzeichen nicht herausnimmt. In der Text-Datei wird zwar hinter der 4 ein Leerzeichen gesetzt, aber das macht erstmal nichts.
Aber warum funktioniert es nur so? Sollte man standardmäßig immer ein Leerzeichen vor > setzen?
Mitglied: 141965
Solution 141965 Nov 28, 2019 updated at 13:07:27 (UTC)
Goto Top
Zitat von @RIPUED:

Tatsächlich geht es mit deinem Skript, wenn man vor dem > Zeichen das Leerzeichen nicht herausnimmt. In der Text-Datei wird zwar hinter der 4 ein Leerzeichen gesetzt, aber das macht erstmal nichts.
Aber warum funktioniert es nur so? Sollte man standardmäßig immer ein Leerzeichen vor > setzen?
Lies meinen Hinweis dazu oben. Ein Leerzeichen vor der Ausgabeumleitung ist im Normalfall nicht erforderlich, aber wenn direkt vor der Umleitung Zahlen stehen denkt die Batch das die einen Kanal umleiten soll, deswegen die Umleitung gleich besser vor die Ausgabe schreiben, dann gibt es solche Probleme erst gar nicht!
Member: RIPUED
RIPUED Nov 28, 2019 updated at 13:59:16 (UTC)
Goto Top
OK, vielen Dank hierfür. Ab wann sollte ich den Teil wie bei dir in Anführungszeichen setzen, wo die Variable gesetzt wird?
Mitglied: 141965
141965 Nov 28, 2019 updated at 13:52:56 (UTC)
Goto Top
Zitat von @RIPUED:

OK, vielen Dank hierfür. Ab wann sollte ich den Teil wie bei dir in Anführungszeichen setzen, wo die Variable gesetzt wird.
Bei Leerzeichen in Pfaden, Sonderzeichen, etc.
Ich mach das grundsätzlich wenn nicht weiß was an Daten da rein kommt, schon ein rein gerutschtes Leerzeichen am Ende der Zeile kann ohne schon Kopfschmerzen bereiten weil man es nicht gleich sieht, so ist das eindeutig.