makroll10
Goto Top

Leerzeichen am Zeilenende vermeiden

Hallo,
mit dem u.a. Batch (Auszug) erzeuge ich aus einer Access-Datenbank heraus die u.a. Datensätze. Leider wird hinter jedem Datensatz gleichzeitig auch ein Leerzeichen erzeugt.
Woran liegt das bzw. wie lässt sich das vermeiden?

echo off & setlocal

if exist "%1\HRM\%2.xml" del "%1\HRM\%2.xml" > nul

set "HRM=%1\HRM\HRM.txt"
set "ExportHRM=%1\HRM\%2.hrm"
set "ExportHRM2=%1\HRM\%2_.hrm"

echo [Params] >%ExportHRM%
echo Version=106 >>%ExportHRM%
echo Monitor=12 >>%ExportHRM%
echo SMode=110000100 >>%ExportHRM%
for /f "tokens=7 delims=;" %%a in (%HRM%) do echo Weight=%%a >>%ExportHRM%
echo. >>%ExportHRM%
echo [Note] >>%ExportHRM%
echo. >>%ExportHRM%
echo [IntTimes] >>%ExportHRM%
for /f "tokens=11 delims=;" %%a in (%HRM%) do echo %%a >>%ExportHRM%

Beispieldaten:

[Params]
Version=106
Monitor=12
SMode=110000100
Weight=70

[Note]

[IntTimes]
01:12:07.0 125 128 145 163


Mit dem folgenden Batch habe ich dann die Leerzeichen entfernt. Das hat zwar funktioniert, führt allerdings dann dazu, dass in den Leerzeilen die Meldung: "ECHO ist ausgeschaltet (OFF)." erscheint.

for /f "delims=" %%i in (%ExportHRM%) do @call :trim %%i
goto :eof
:trim
%ExportHRM2% echo %*
goto :eof

_____________________________________________________

[Params]
Version=106
Monitor=12
SMode=110000100
Weight=70
ECHO ist ausgeschaltet (OFF).
[Note]
ECHO ist ausgeschaltet (OFF).
[IntTimes]
01:12:07.0 125 128 145 163

_____________________________________________________


Gruß
Markus

Content-Key: 341766

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

Ausgedruckt am: 19.03.2024 um 03:03 Uhr

Mitglied: 133417
133417 27.06.2017 aktualisiert um 16:31:19 Uhr
Goto Top
Zitat von @makroll10:
Leider wird hinter jedem Datensatz gleichzeitig auch ein Leerzeichen erzeugt.
Kein Wunder wenn du vor den Redirectors überall ein Leerzeichen einfügst face-smile
_>>%ExportHRM%
Deswegen als best practice immer den Redirect am Anfang der Zeile machen.
>>%ExportHRM% echo( BlaBlaBlaBla

Batch und Access, wuahhh da läuft einem ein Schauer über den Rücken face-big-smile.

Gruß
Mitglied: Penny.Cilin
Penny.Cilin 27.06.2017 um 16:24:24 Uhr
Goto Top
hallo,

indem Du Deinen Batchcode vielleicht so umstellst:
>%ExportHRM% echo [Params]
>>%ExportHRM% echo Version=106
>>%ExportHRM%  echo Monitor=12
>>%ExportHRM%  echo SMode=110000100
>>%ExportHRM%  for /f "tokens=7 delims=;" %%a in (%HRM%) do echo Weight=%%a  
>>%ExportHRM%  echo.
>>%ExportHRM%  echo [Note]
 echo.>>%ExportHRM% 
>>%ExportHRM% echo [IntTimes]
>>%ExportHRM% for /f "tokens=11 delims=;" %%a in (%HRM%) do echo %%a  

D.h. die Ausgabe am Anfang.


Gruss Penny
Mitglied: makroll10
makroll10 27.06.2017 um 16:55:43 Uhr
Goto Top
Hallo Penny,
habe es gerade so umgestellt:

echo off & setlocal

if exist "%1\HRM\%2.xml" del "%1\HRM\%2.xml" > nul

set "HRM=%1\HRM\HRM.txt"
set "ExportHRM=%1\HRM\%2.hrm"
set "ExportHRM2=%1\HRM\%2_.hrm"

%ExportHRM% echo [Params]
%ExportHRM% echo Version=106
%ExportHRM% echo Monitor=12
%ExportHRM% echo SMode=110000100
%ExportHRM% for /f "tokens=1 delims=;" %%a in (%HRM%) do echo Weight=%%a

Dann kommt er allerdings nur bis "SMode" und bricht ab der ersten for-Schleife ab... Das sieht dann so aus:

[Params]
Version=106
Monitor=12
SMode=110000100

Gruss
Markus
Mitglied: 133417
Lösung 133417 27.06.2017 aktualisiert um 17:01:06 Uhr
Goto Top
Da gehören Klammern um die Schleife:
>>"%ExportHRM%" (for /f "tokens=1 delims=;" %%a in (%HRM%) do echo(Weight=%%a)  
Mitglied: Penny.Cilin
Lösung Penny.Cilin 27.06.2017 um 17:12:21 Uhr
Goto Top
upps hatte ich übersehen. face-sad
@133417: Danke. - Das nennt man Teamarbeit face-smile
Mitglied: makroll10
makroll10 27.06.2017 um 17:25:15 Uhr
Goto Top
Das war's... Super. Vielen Dank.