Woher kommen überzählige Blanks in der Ausgabedatei
Hallo,
ich habe folgendes Script, welches eine Ursprungsdatei umwandeln soll und die Zeilen mit Blanks bis zu einer gewissen Position auffüllen soll. Dabei werden in der Ausgabedatei aber am Anfang ein Blank und am Ende 2 Blanks zuviel rausgeschrieben.
Kann mir jemand den Grund nennen?
Hier mein Script:
Ich häng mal zwei Screenshots der Input und output-Datei an. (Kann man hier auch files hochladen?)
Vielen Dank
ich habe folgendes Script, welches eine Ursprungsdatei umwandeln soll und die Zeilen mit Blanks bis zu einer gewissen Position auffüllen soll. Dabei werden in der Ausgabedatei aber am Anfang ein Blank und am Ende 2 Blanks zuviel rausgeschrieben.
Kann mir jemand den Grund nennen?
Hier mein Script:
@echo off & setlocal
Set "File=c:\Alone\input.txt"
Set "NewFile=c:\Alone\output.txt"
if exist "%NewFile%" del "%NewFile%"
set "Blanks= "
for /f "usebackq delims=" %%i in ("%File%") do set "zeile=%%i%Blanks%" & call :ProcessLine
Goto :eof
:ProcessLine
Set "zeile=%zeile:&=§%"
set "zeile=%zeile:~0,128%
Set "lineOut=%zeile:§=^&%"
Echo >>"%NewFile%" %lineOut%
goto :eof
Ich häng mal zwei Screenshots der Input und output-Datei an. (Kann man hier auch files hochladen?)
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 129164
Url: https://administrator.de/contentid/129164
Ausgedruckt am: 17.11.2024 um 00:11 Uhr
7 Kommentare
Neuester Kommentar
Servus,
das sieht nach Biber / Bastla aus...
Aber - ob einer der beiden in Zeile 5 das " vergessen hat?
mach mal eines rein..
Gruß
das sieht nach Biber / Bastla aus...
Aber - ob einer der beiden in Zeile 5 das " vergessen hat?
mach mal eines rein..
Gruß
Moin josken69,
mindestens eines der überzähligen Leerzeichen ist erklärlich durch den "Echo"-Befehl in Zeile 12
Und die %Blank%-Variable würde ich so umbenennen, dass (dir) beim späteren Lesen wieder einfällt, was da drin ist.
Also skizziert und ungetestet so:
[Zeile 12-alt hatte 1 Leerzeichen vor den ">>" und 2 nach %lineOut%]
Grüße
Biber
mindestens eines der überzähligen Leerzeichen ist erklärlich durch den "Echo"-Befehl in Zeile 12
Und die %Blank%-Variable würde ich so umbenennen, dass (dir) beim späteren Lesen wieder einfällt, was da drin ist.
Also skizziert und ungetestet so:
@echo off & setlocal
Set "File=c:\Alone\input.txt"
Set "NewFile=c:\Alone\output.txt"
if exist "%NewFile%" del "%NewFile%"
set "Blanks100= "
for /f "usebackq delims=" %%i in ("%File%") do set "zeile=%%i%Blanks100%" & call :ProcessLine
Goto :eof
:ProcessLine
Set "zeile=%zeile:&=§%"
set "zeile=%zeile:~0,128%
Set "lineOut=%zeile:§=^&%"
Echo %lineOut%>>"%NewFile%"
REM Zeile 12-alt: Echo >>"%NewFile%" %lineOut%
goto :eof
Grüße
Biber
Hallo josken69!
Zunächst hatte ich das "&" in Verdacht - da aber bereits vor der Rückkonvertierung von "§" nach "^&" die Länge festgelegt wird, konnte es dann doch nicht daran liegen.
Dann fiel mir aber noch die "1" unmittelbar am Ende der ersten Zeile auf - und da ">>" nur eine Kurzform der Schreibweise "1>>" darstellt (Umleitung der Ausgabe auf Kanal 1 = STDOUT), gehe ich davon aus, dass diese 1 als Bestandteil eben dieser Umleitung interpretiert wurde.
Mit der folgenden Schreibweise der Zeile 12
<code type="plain"">>>"%NewFile%" Echo %lineOut%
sollte es dann eigentlich klappen ...
Grüße
bastla
Zunächst hatte ich das "&" in Verdacht - da aber bereits vor der Rückkonvertierung von "§" nach "^&" die Länge festgelegt wird, konnte es dann doch nicht daran liegen.
Dann fiel mir aber noch die "1" unmittelbar am Ende der ersten Zeile auf - und da ">>" nur eine Kurzform der Schreibweise "1>>" darstellt (Umleitung der Ausgabe auf Kanal 1 = STDOUT), gehe ich davon aus, dass diese 1 als Bestandteil eben dieser Umleitung interpretiert wurde.
Mit der folgenden Schreibweise der Zeile 12
<code type="plain"">>>"%NewFile%" Echo %lineOut%
sollte es dann eigentlich klappen ...
Grüße
bastla