Top-Themen

Aktuelle Themen (A bis Z)

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

Variablen verwenden nach auslesen aus Datei

Frage Entwicklung Batch & Shell

Mitglied: xasher

xasher (Level 1) - Jetzt verbinden

31.03.2010 um 12:24 Uhr, 3623 Aufrufe, 4 Kommentare

Hallo zusammen,

ich seh gerade den Wald vor lauter Bäumen nicht mehr. Ich bin gerade dabei meine GPS Daten aufzubereiten.
Diese werden in mehreren CSV-Dateien gespeichert. Mit einem externen Tool (GPSBabel) will ich den Datenbestand
auf 10% reduzieren, da diese Werte durchaus genügen um ein der Karte ein Route darzustellen.

Wider besseren Wissens gehe ich wie folgt vor:
1. Dateien aus dem Verzeichnis auslesen
2. Steuerzeichen entfernen
3. Die Anzahl der Zeilen in eine dummy.txt schreiben
4. In der zweiten For Schleife die Anzahl in eine Variable schreiben bzw. 10% davon
5. GPSBabel aufrufen und denWert aus Variable ANZ übergeben

Hier mal den Code:

01.
@echo off & setlocal enabledelayedexpansion  
02.
FOR /F "tokens=*" %%a IN ('DIR *.CSV /B') DO ( 
03.
     
04.
  : mit sed die NUL-Zeichen entfernen, damit man die Anzahl der Zeilen rausbekommt 
05.
  sed s/\x0//g > "neu_%%a" "%%a" 
06.
   
07.
  : Anzahl der Zeilen in Datei schreiben 
08.
  find /v /c "&*fake&*" neu_%%a > dummy.txt   
09.
 
10.
 
11.
 
12.
  FOR /F "skip=1 tokens=3 delims=: " %%i IN (dummy.txt) DO @( 
13.
    set /a "ANZ=%%i/100*10" 
14.
    : ANz anzeigen 
15.
    echo %ANZ% 
16.
17.
     
18.
    echo gpsbabel -w -t -i v900 -f %%a -x track,course,speed,pack -x duplicate,location -x position,distance=5M -x simplify,count=%ANZ% -o unicsv -F neu_%%a 
19.
    pause   
20.
    
21.
)


Jetzt passiert folgendes: Beim ersten Aufruf der Batch Datei zeigt er im echo %ANZ% garnichts an und bei den weiteren Aufrufen immer nur denselben Wert obwohl ich schon während des Ablaufs in die dummy.txt geschaut habe und dort unterschiedliche Werte drin standen.

Ich weiß gerade nicht mehr weiter. Zugegeben. Die Krücke mit dem Datei schreiben und auslesen in eine Variable ist da bestimmt nicht von Vorteil. Bin daher auch für eine andere Vorgehensweise offen.

Danke euch mal schon vorab.

Gruß
xasher
Mitglied: Biber
31.03.2010 um 13:09 Uhr
Moin xasher,

der kleine Fehler liegt im "verzögerten Variablenauflösen", das du ja richtig vorbereitet hast mit der Klausel "SetLocal EnableDelayedExpansion".
Das ist die notwendige Bedingung.
Welche der Variablen du nun tatsächlich "verzögert" auflösen willst, das musst durch die Verwendung der Schreibweise !Variablennamen! statt %Variablennamen% kundtun.
Erst dann hast du notwendige und hinreichende< Bedingungen.
Kürzer geschrieben - du müsstest oben in zeile 15 und Zeile 18 jeweils !ANZ! statt %ANZ% schreiben.

Die Ermittlung der Anzahl Zeilen der "neu_%%a"-dateien würde ich allerdings ohne temporäre Datei dummy.txt durchziehen.

Beispiel:
01.
.. 
02.
FOR /F "tokens=*" %%a IN ('DIR *.CSV /B') DO (  
03.
... 
04.
.... 
05.
              FOR /F "delims=:" %%i in ('FindStr /n "^" .neu_%%a') do ( 
06.
                   set /a "ANZ=%%i/100*10"  
07.
                    echo Zeilen in neu_%%a:  !ANZ! 
08.
09.
..... 
10.
... 
11.
12.
...
Grüße
Biber
Bitte warten ..
Mitglied: xasher
31.03.2010 um 13:19 Uhr
Hallo Biber,

danke für die schnelle Antwort. Jetzt hab ichs so gemacht, auch die For Schleife nach deinem Beispiel angepasst.

Am Bild laufen jetzt die Zeilen runter. Allerdings löst er die !ANZ! nicht auf

Zeilen in neu_10032901.CSV: !ANZ!
Zeilen in neu_10032901.CSV: !ANZ!
Zeilen in neu_10032901.CSV: !ANZ!
Zeilen in neu_10032901.CSV: !ANZ!

Hast du eine Idee was das ist?
Bitte warten ..
Mitglied: bastla
31.03.2010 um 14:04 Uhr
Hallo xasher!

Auf Basis Deines Ansatzes (aber ungetestet):
01.
@echo off & setlocal enabledelayedexpansion  
02.
FOR /F "tokens=*" %%a IN ('DIR *.CSV /B') DO ( 
03.
 
04.
    : mit sed die NUL-Zeichen entfernen, damit man die Anzahl der Zeilen rausbekommt 
05.
    sed s/\x0//g > "neu_%%a" "%%a" 
06.
 
07.
    : Anzahl der Zeilen in Datei schreiben 
08.
    for /f %%i in find /v /c "&*fake&*"<"neu_%%a" do set /a ANZ=%%i/100*10 
09.
 
10.
    echo gpsbabel -w -t -i v900 -f %%a -x track,course,speed,pack -x duplicate,location -x position,distance=5M -x simplify,count=!ANZ! -o unicsv -F neu_%%a 
11.
    pause   
12.
 
13.
)
Grüße
bastla
Bitte warten ..
Mitglied: xasher
31.03.2010 um 14:06 Uhr
super danke euch! Bin wirklich froh, dass es tut. Hatte da einen Schreibfehler drin. Ich sitz schon seit Stunden über diesem Script, da fallen einem die Fehler nicht mehr auf Anhieb auf.

Danke euch für eure Mühe.

Gruß
xasher
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Datei als Variable auslesen und Variable ändern
gelöst Frage von chainsawBatch & Shell1 Kommentar

Hallo Profis, ich komme mit folgendem Problem nicht weiter: In dem Verzeichnis "C:\logfiles" landen bei mir Log-Dateien. Diese Log-Dateien ...

Batch & Shell
Variable aus ini Datei auslesen und weiterverwenden
gelöst Frage von n0cturneBatch & Shell17 Kommentare

Hallo zusammen, ich habe eine settings.ini Datei, die unter anderem folgendes beinhaltet: Settings port=1313 Nun möchte ich den Port ...

PHP
Variable einer seite auf einer zweiten verwenden
gelöst Frage von tobmesPHP2 Kommentare

Hi Experten, ich habe mal wieder ein kleines Problem. Ich habe auf einer Seite mehrere Forms, je nachdem, welcher ...

Batch & Shell
Powershell Ordnername auslesen und verwenden
gelöst Frage von zamsi7Batch & Shell3 Kommentare

Hallo an alle, hoffe ich bin hier richtig und jemand kann mir helfen :) Ich möchte eine cert Datei ...

Neue Wissensbeiträge
Datenschutz

Weitere Inforamtionen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 40 MinutenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 2 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 5 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 11 StundenErkennung und -Abwehr2 Kommentare

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücken Spectre, Meltdown ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

E-Business
Bankgeheimnis abgeschafft - wie kann ich mich wehren?
Frage von honeybeeE-Business13 Kommentare

Hallo, ich nehme Bezug auf diesen Artikel: Als ich das gelesen habe, wurde mir schlecht Es geht ja niemanden ...