xasher
Goto Top

Zeichen in Schleifenvariablen löschen

Hallo zusammen,

ich will aus einer csv-Datei mit Geodaten eine kml-Datei für Google-Earth basteln.
Dazu müssen die Koordinaten leicht umformatiert werden. Das heißt das letzte Zeichen entfernt werden wo "N" bzw "E" drinsteht

bsp:
48.123456N
09.123468E

Das letzte Zeichen muss jeweils weg, aber das funktioniert bei den Schleifenvariablen auch über Umwege nicht
wie hier im Script dargestellt

@echo on
FOR /F "skip=1 eol=; tokens=5,6,7 delims=, " %%i in (as_neu.csv) do @(

set LATITUDE=%%i
set var1=%LATITUDE:~0,9%

echo %var1%
echo %%i
echo %%k
)

Problem ist, das er immer dieselbe var1 ausgibt, bei allen Zeilen, und die Var %%i kann ich nicht so richtig bearbeiten, da funktioniert das mit dem abschneiden des letzten Zeichens nicht.

Habt ihr einen Tipp, wie man das Problem umgehen kann?

gruß und danke
xasher

Content-Key: 139182

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

Ausgedruckt am: 28.03.2024 um 12:03 Uhr

Mitglied: bastla
bastla 25.03.2010 um 18:20:30 Uhr
Goto Top
Hallo xasher und willkommen im Forum!

Einmal mehr das Stichwort "delayedExpansion" ...

Versuch es daher so:
@echo on & setlocal enabledelayedexpansion
FOR /F "skip=1 eol=; tokens=5,6,7 delims=, " %%i in (as_neu.csv) do @(  
    set LATITUDE=%%i
    set var1=!LATITUDE:~0,-1!

    echo !var1!
    echo %%i
    echo %%k
)
Anmerkung zu "!LATITUDE:~0,-1!": Da die Anforderung "Abschneiden des letzten Zeichens" lautete, wird der Teilstring entsprechend (bis zum Zeichen bei "Länge-1") ermittelt.

Grüße
bastla
Mitglied: Biber
Biber 25.03.2010 um 18:23:49 Uhr
Goto Top
Moin xasher,

willkommen im Forum.
Zwei Tipps.
  • Benutze Codetags.
  • Benutze "DelayedExpansion" bzw den Befehl "Setlocal EnableDelayedExpansion"

Beispiel für beides:
@echo off & Setlocal EnableDelayedExpansion
REM zum Testen ggf @echo on
FOR /F "skip=1 eol=; tokens=5,6,7 delims=, " %%i in (as_neu.csv) do @(  

set LATITUDE=%%i
set var1=!LATITUDE:~0,9%!

echo %var1%
echo %%i
echo %%k
)

Die "verzögert aufgelöste" Variable %var% muss als solche als !var! statt %var% angesprochen werden.

Grüße
Biber

[edit] @bastla: Okay, okay.... weit abgeschlagen...[/edit]
Mitglied: xasher
xasher 25.03.2010 um 19:15:46 Uhr
Goto Top
Hallo ihr beiden,

vielen Dank für eure schnelle Antworten.
Ich hab hier glaub noch ein Windows7 spezifisches Problem mit dem Syntax: set var1=!LATITUDE:~0,-1!

Genauer gesagt mit dem -1. Das funktioniert bei mir unter Windows XP auf dem Laptop wirklich perfekt, in win7 wirds aber komplett ignoriert. Die Ausgabe sieht dann so aus:


48.123456N
48.123456N
300 (Höhe)

Das Script scheint hier völlig wirkungslos zu sein, daher habe ich auch 0,9 angegeben, was nicht gut ist, da die Länge hier bestimmt varieren kann.
Gibt es dafür eine Abhilfe?

Gruß und vielen Dank
xasher
Mitglied: Biber
Biber 25.03.2010 um 19:33:01 Uhr
Goto Top
Moin xasher,

so ungern ich die RedmonderInnen in Schutz nehme... ich kann nicht glauben, dass die soo geschlampt haben.

Bitte überprüfe noch mal, ob du in dem Skript auf dem Win7-Rechner nicht vielleicht ein trailing blank hinter dem %%i in der Zeile
set LATITUDE=%%i 
...hast und gewöhne dir besser diese Schreibweise an.
set "LATITUDE=%%i"

Grüße
Biber
Mitglied: bastla
bastla 25.03.2010 um 19:33:46 Uhr
Goto Top
Hallo xasher!
... in win7 wirds aber komplett ignoriert
kann ich nicht nachvollziehen.

Verwende zur Sicherheit folgende Schreibweise:
set "LATITUDE=%%i"  
set "var1=!LATITUDE:~0,-1!"  
Beim Kopieren eines Quelltexts aus dem Forum wird gerne am Zeilenende ein Leerzeichen angefügt - mit der angeführten Schreibweise wäre das dann egal ...

Grüße
bastla

[Edit] @Biber: Mit der Nummer könnten wir schön langsam auftreten ... face-smile [/Edit]
Mitglied: xasher
xasher 25.03.2010 um 19:41:10 Uhr
Goto Top
ähm ja!!!

Scheint wohl so gewesen zu sein face-smile

mir kams gerade schon spanisch vor als es mit -2 ging. Auf das Leerzeichen wäre ich aber wahrscheinlich nicht so schnell gekommen - hatte gerade schon den Fehler in der csv gesucht.

Danke euch für eure Bemühungen.
Gruß
xasher
Mitglied: bastla
bastla 25.03.2010 um 20:00:28 Uhr
Goto Top
Hallo xasher!

War zwar keine Mühe - aber zur Ehrenrettung von "Redmond's Best" hätten wir die natürlich auch in Kauf genommen ... face-wink

Grüße
bastla