Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zeichen in Schleifenvariablen löschen

Frage Entwicklung Batch & Shell

Mitglied: xasher

xasher (Level 1) - Jetzt verbinden

25.03.2010, aktualisiert 18:26 Uhr, 4513 Aufrufe, 7 Kommentare

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
Mitglied: bastla
25.03.2010 um 18:20 Uhr
Hallo xasher und willkommen im Forum!

Einmal mehr das Stichwort "delayedExpansion" ...

Versuch es daher so:
01.
@echo on & setlocal enabledelayedexpansion 
02.
FOR /F "skip=1 eol=; tokens=5,6,7 delims=, " %%i in (as_neu.csv) do @( 
03.
    set LATITUDE=%%i 
04.
    set var1=!LATITUDE:~0,-1! 
05.
 
06.
    echo !var1! 
07.
    echo %%i 
08.
    echo %%k 
09.
)
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
Bitte warten ..
Mitglied: Biber
25.03.2010 um 18:23 Uhr
Moin xasher,

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

Beispiel für beides:
01.
@echo off & Setlocal EnableDelayedExpansion 
02.
REM zum Testen ggf @echo on 
03.
FOR /F "skip=1 eol=; tokens=5,6,7 delims=, " %%i in (as_neu.csv) do @( 
04.
 
05.
set LATITUDE=%%i 
06.
set var1=!LATITUDE:~0,9%! 
07.
 
08.
echo %var1% 
09.
echo %%i 
10.
echo %%k 
11.
)
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]
Bitte warten ..
Mitglied: xasher
25.03.2010 um 19:15 Uhr
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
Bitte warten ..
Mitglied: Biber
25.03.2010 um 19:33 Uhr
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
Bitte warten ..
Mitglied: bastla
25.03.2010 um 19:33 Uhr
Hallo xasher!
... in win7 wirds aber komplett ignoriert
kann ich nicht nachvollziehen.

Verwende zur Sicherheit folgende Schreibweise:
01.
set "LATITUDE=%%i" 
02.
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 ... [/Edit]
Bitte warten ..
Mitglied: xasher
25.03.2010 um 19:41 Uhr
ähm ja!!!

Scheint wohl so gewesen zu sein

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
Bitte warten ..
Mitglied: bastla
25.03.2010 um 20:00 Uhr
Hallo xasher!

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

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
Microsoftaccount löschen (3)

Frage von Kroni99 zum Thema Microsoft Office ...

Exchange Server
Exchange 2010 Akzeptierte Domäne löschen (4)

Frage von Rob1982 zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...