Inhalt von Verzeichnis auflisten und batch übergeben
Hallo ich habe folgendes Problem,
ich lasse den Inhalt eines Verzeichnisses auflisten um diesen dann als Variable zu setzen.
swoweit funktioniert das auch.
anschließend will ich dann das er die dateien nacheinander ausliest und den wert anzeigt.
und genau da beginnt das problem ... nach dem anzeigen des inhaltes wars das dann schon ... nur wieso ?
hat da jemand ne lösung parat ?
bin dankbar wie immer
gruß landstreicher
ich lasse den Inhalt eines Verzeichnisses auflisten um diesen dann als Variable zu setzen.
swoweit funktioniert das auch.
anschließend will ich dann das er die dateien nacheinander ausliest und den wert anzeigt.
und genau da beginnt das problem ... nach dem anzeigen des inhaltes wars das dann schon ... nur wieso ?
hat da jemand ne lösung parat ?
@echo off
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CDATE=%%c%%b%%a
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CMonat=%%b
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CMonjahr=%%c%%b
::ren %Ziel% %cdate%
:: Variablenbelegung nach OS:
:: WinNT: a = Wochentag, b = Monat, c = Tag, d = Jahr
:: WinXP: a = Tag, b = Monat, c = Jahr, d= Wochentag
:: In diesem Fall: 15-10-Mi (Unter Win2000) und 2003-10-15 (unter XP)
::------------------------------------------------------------------------------------------
set ordner=1500001463_%Cmonjahr%
set quelle=\\w8n00278\P800\1500001463_%Cmonjahr%*.csv
set ziel=\\w8n00278\P800\%ordner%\1500001463_%Cmonjahr%*.csv
echo Jahr Monat = %Cmonjahr%
echo Monat=%Cmonat%
for /f "delims=" %%i in ('dir /b /tc \\w8n00278\P800\%ordner%\1500001463_%Cmonjahr%*_P800_DB.csv') do call :ProcessFile "%%i"
:ProcessFile
set "Variable=%~1"
echo %Variable%
for /f "skip=2 tokens=1,2,3,4,5,6,7,8,9,10 delims=;" %%a in (\\w8n00278\P800\%ordner%\%Variable%) do echo %%d %%i
bin dankbar wie immer
gruß landstreicher
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 86013
Url: https://administrator.de/forum/inhalt-von-verzeichnis-auflisten-und-batch-uebergeben-86013.html
Ausgedruckt am: 25.12.2024 um 15:12 Uhr
30 Kommentare
Neuester Kommentar
Moin Landstreicher,
Du hast es ja schon weitgehend zum Debuggen vorbereitet.
Dann reduziere doch den zu untersuchenden Teil auf:
Und teste doch bitte die untere Zeile [sinngemäß] mal am CMD-Prompt gegen eine der *.csv-Dateien und/oder poste mal die ersten 5 Zeilen einer dieser CSV-Dateien.
Grüße
Biber
Du hast es ja schon weitgehend zum Debuggen vorbereitet.
Dann reduziere doch den zu untersuchenden Teil auf:
...
echo [%Variable%]
::## und poste, was angezeigt wird
for /f "skip=2 tokens=4,9 delims=;" %%a in (\\w8n00278\P800\%ordner%\%Variable%) do echo Token4:[%%a] Token9: [%%b]
:: wenn Du nur die zwei Tokens #4 und #9 brauchst, reicht "tokens=4,9"
...
Und teste doch bitte die untere Zeile [sinngemäß] mal am CMD-Prompt gegen eine der *.csv-Dateien und/oder poste mal die ersten 5 Zeilen einer dieser CSV-Dateien.
Grüße
Biber
Moin Leichtstrander,
nicht, dass ich nicht tagelang darüber nachgedacht hätte, aber...
Wie was welchen höchsten Wert?? Du schreibst doch 10 Werte je Zeile raus?
Welcher davon ist denn nun der kritische, den Du sofort sehen willst???
Ich schließe mal das erste Feld "Co" aus...
Ratlos
Biber
nicht, dass ich nicht tagelang darüber nachgedacht hätte, aber...
nur möchte ich gern, das er mir nur den höchsten wert
bzw. die ganze zeile der CSV-Datei in der sich der Höchste Wert befindet
bzw. die ganze zeile der CSV-Datei in der sich der Höchste Wert befindet
Wie was welchen höchsten Wert?? Du schreibst doch 10 Werte je Zeile raus?
Welcher davon ist denn nun der kritische, den Du sofort sehen willst???
Ich schließe mal das erste Feld "Co" aus...
Ratlos
Biber
Moin Streichlander,
dann müssen wir die letzte Zeile mal optisch auf ein paar Zeilen auseinanderziehen.
So sieht sie jetzt (formatiert) aus:
Oben hinter das "Echo off" in der ersten Zeile muss noch ein " & Setlocal EnableDelayedExpamsion"
Dort definieren wir eine Variable %max% mit der Halbzeile "Set /a max=0"
Und in dieser FOR /F-Konstruktion merken wir uns das (relative) Maximum.
Thats all.
Und die Zeile mit dem Maximum in der neu geschriebenen Datei findest Du mit
Grüße
Biber
dann müssen wir die letzte Zeile mal optisch auf ein paar Zeilen auseinanderziehen.
So sieht sie jetzt (formatiert) aus:
for /f "skip=1 tokens=1-10 delims=;" %%a in (\\w8n00278\P800\%ordner%\%Var%) do (
echo %%a; %%b; %%c; %%d; %%e; %%f; %%g; %%h; %%i >> \\w8n00278\P800\%ordner%\PPW_auswertung.csv
)
Oben hinter das "Echo off" in der ersten Zeile muss noch ein " & Setlocal EnableDelayedExpamsion"
Dort definieren wir eine Variable %max% mit der Halbzeile "Set /a max=0"
Und in dieser FOR /F-Konstruktion merken wir uns das (relative) Maximum.
for /f "skip=1 tokens=1-10 delims=;" %%a in (\\w8n00278\P800\%ordner%\%Var%) do (
If %%i GTR !max! Set /a "max=%%i"
echo %%a; %%b; %%c; %%d; %%e; %%f; %%g; %%h; %%i >> \\w8n00278\P800\%ordner%\PPW_auswertung.csv
)
Thats all.
Und die Zeile mit dem Maximum in der neu geschriebenen Datei findest Du mit
FindStr+Suche exakt+am Ende der Zeile+ nach der Zeichenkette "Semikolon+Leerzeichen+%max%" "inDatei"
FindStr /C:"; %max%$" \\w8n00278\P800\%ordner%\PPW_auswertung.csv
FindStr /C:"; %max%$" \\w8n00278\P800\%ordner%\PPW_auswertung.csv
Grüße
Biber
Moin La Strada,
das sind mir zuviele Probleme für eine Montachmittach-Mittachspause...
Aber wenn schon, dann fanden wir mit dem äüßeren Schleifenproblem an zum Warmwerden...
Die "ECHO is' ON" bzw. "Die Datei "\\{pfad}\" kann nicht gefunden werden"-Meldung kommen zustande, wenn die Variable "%var%" in :Process3 keinen Wert hat.
das wiederum kann eigentlich nur sein wenn der Befhl
Mach bitte mal ein
Wenn nich', schauen wir nach meinem Mittachsschläfchen weiter.
Grüße
Biber
das sind mir zuviele Probleme für eine Montachmittach-Mittachspause...
Aber wenn schon, dann fanden wir mit dem äüßeren Schleifenproblem an zum Warmwerden...
Die "ECHO is' ON" bzw. "Die Datei "\\{pfad}\" kann nicht gefunden werden"-Meldung kommen zustande, wenn die Variable "%var%" in :Process3 keinen Wert hat.
das wiederum kann eigentlich nur sein wenn der Befhl
dir /b /tc \\w8n00278\P800\%ordner%\9100007521_%Cmonjahr%*_P800_DB.csv
- entweder ein Verzeichnis (=keine Datei) mit diesem Namensaufbau (mit-)findet
- oder wenn eine Datei dabei ist, die Du zwar SEHEN, aber nicht lesen darfst (Rechteproblem)
Mach bitte mal ein
dir /b /tc \\w8n00278\P800\%ordner%\9100007521_200805*_P800_DB.csv
und danach eindir /b /a-d /tc \\w8n00278\P800\%ordner%\9100007521_200805*_P800_DB.csv
Wenn beim zweten Befehl mit dem Parameter "/a-d" [Attribut NICHT Directory] die Ausgabe kürzer ist, war es Fehlerfall 1 und Du musst das "/A-d" einbauen in den DIR-Befehl.Wenn nich', schauen wir nach meinem Mittachsschläfchen weiter.
Grüße
Biber
Moin Streichlaster,
ganz falscher Film bzw. ganz falsche Stelle, an der wir gestern den vermeintlichen Fehler gesucht haben.
Hier ist das Problem (jetzt)
...und hier der Bugfix
Das fehlende "goto:eof" nach der FOR /F-Anweisung hat natürlich bewirkt, dass nach Abarbeitung aller Elemente die Zeile unterhalb von "FOR/F" ausgeführt werden.
Nicht per call: aufgerufen, sondern auf dem "ganz normalen Weg". dem ganz banalen Zeile-Für-Zeile ausführen.
Probier mal bitte.
Grüße
Biber
ganz falscher Film bzw. ganz falsche Stelle, an der wir gestern den vermeintlichen Fehler gesucht haben.
Hier ist das Problem (jetzt)
for /f "delims=" %%a in ('dir /b /tc \\whatever ever.csv') do call :ProcessFile3 "%%a"
:ProcessFile3
...
for /f "delims=" %%a in ('dir /b /tc \\whatever ever.csv') do call :ProcessFile3 "%%a"
goto:eof
:ProcessFile3
....
Nicht per call: aufgerufen, sondern auf dem "ganz normalen Weg". dem ganz banalen Zeile-Für-Zeile ausführen.
Probier mal bitte.
Grüße
Biber
Moin AmStrandlaicher,
dieses kleine i-Tüpfelchen solltest Du dadurch erreichen können, dass Du unmittelbar vor der "FOR /F"-Anweisung, die die .csv-Dateien abfackelt, folgende Zeile einfügst:
Ich hoffe, die vielen zusammengestückelten Fragmente passen noch zusammen...
Wäre schön, wenn Du noch mal den kompletten Schnipsel für einen final review posten könntest.
Grüße
Biber
dieses kleine i-Tüpfelchen solltest Du dadurch erreichen können, dass Du unmittelbar vor der "FOR /F"-Anweisung, die die .csv-Dateien abfackelt, folgende Zeile einfügst:
...
Echo Co;Jahr;Monat;Instanz;AnzDBLinks;AnzDBObjekte;AnzTableSpaces;DBSizeMB;TAV_MB_TAG >\\w8n00278\P800\%ordner%\PPW_auswertung.csv
::...hier kommt dann..
for /f "skip=1 tokens=1-10 delims=;" %%a in (...sülzdibülz....)
Ich hoffe, die vielen zusammengestückelten Fragmente passen noch zusammen...
Wäre schön, wenn Du noch mal den kompletten Schnipsel für einen final review posten könntest.
Grüße
Biber
Moin Wandstreichler,
in Deinerm letzten geposteten 3-Zeilen-Fragment ist das Problem, dass sowohl in der ersten Zeilen mit dem "Echo whatever >ausgabedatei" wie auch mit der dritten Zeile "Findstr blubb >ausgabedatei" jeweils die "ausgabedatei" neu erzeugt wird.
Ändere bitte das zweite ">ausgabedatei" in ein ">>ausgabedatei" und gut is'.
Und dann poste bitte nochmal das ganze Gelumpe in einem Stück zur Endabnahme.
Grüße
Biber
P.S.
in Deinerm letzten geposteten 3-Zeilen-Fragment ist das Problem, dass sowohl in der ersten Zeilen mit dem "Echo whatever >ausgabedatei" wie auch mit der dritten Zeile "Findstr blubb >ausgabedatei" jeweils die "ausgabedatei" neu erzeugt wird.
Ändere bitte das zweite ">ausgabedatei" in ein ">>ausgabedatei" und gut is'.
Und dann poste bitte nochmal das ganze Gelumpe in einem Stück zur Endabnahme.
Grüße
Biber
P.S.
Ich hoffe ich habe dich nicht zu sehr verwirrt
Ich habe schon Reden von Kohl und Stoiber und Songs von Grönemeyer überlebt... was soll mich verwirren..?
Moin La Streichla,
wenn nur ein Höchstwert in diese Höchstwertdatei durchkommen soll, dann wenden wir einfach dieselbe Strategie an, die wir vorher so geübt haben - Reduzierung auf einen Satz.
Am besten beim "FindStr /C:"
Grüße und gute Besserung
Biber
wenn nur ein Höchstwert in diese Höchstwertdatei durchkommen soll, dann wenden wir einfach dieselbe Strategie an, die wir vorher so geübt haben - Reduzierung auf einen Satz.
Am besten beim "FindStr /C:"
...
:: JETZTIGER Zustand.
FindStr /C:"; %max%" \\w8n00278\P800\%ordner%\PPW_auswertung.csv >>\\w8n00278\P800\%ordner%\PPW_hoechstwert.csv
...
:: Neuer Zustand.
FOR /F "delims=" %%i in ('FindStr /C:"; %max%" \\w8n00278\P800\%ordner%\PPW_auswertung.csv') ') do set "OneMaxLine=%%i"
Echo.%OneMaxLine%>>\\w8n00278\P800\%ordner%\PPW_hoechstwert.csv
Grüße und gute Besserung
Biber
Moin Strandgleiter,
ich kann ärgerlicherweise diesen Fehler reproduzieren, mir aber nicht erklären..
Fakt ist, trotz "setlocal EnableDelayedExpansion wird in diesem Block..
...die Variable Max nicht mit ihrem aktuellen Wert !max! aufgelöst.
Versteh ich nicht - habe aber diese Effekt auch auf meinem Rechner. Muss ich mal bastla fragen...
Anyhow - zwei Workarounds fallen mir ein (*BTW* Mach ich denn eigentlich irgendetwas anderes als Workarounds, seit Bill Gates meinte, er müsste unbedingt Software verkaufen statt Gebrauchtwagen? *grmmbl*)..
a) Diesen Block ändern auf:
b) Andere Variante wäre, einen Call-Block aufzurufen, was dann ungefähr so ästhetisch aussehen würde *würg*:
Sollte mir noch ein Licht aufgehen, wo der Denk-/Syntaxfehler liegt, dann bist Du einer der ersten, die es erfahren.
Grüße
Biber
ich kann ärgerlicherweise diesen Fehler reproduzieren, mir aber nicht erklären..
Fakt ist, trotz "setlocal EnableDelayedExpansion wird in diesem Block..
for /f "skip=1 tokens=1-10 delims=;" %%a in (\\w8n00278\P800\%ordner%\%Var%) do (
If %%i GTR !max! Set /a "max=%%i"
echo %%a; %%b; %%c; %%d; %%e; %%f; %%g; %%h; %%i >> \\w8n00278\P800\%ordner%\PPW_auswertung.csv
)
Versteh ich nicht - habe aber diese Effekt auch auf meinem Rechner. Muss ich mal bastla fragen...
Anyhow - zwei Workarounds fallen mir ein (*BTW* Mach ich denn eigentlich irgendetwas anderes als Workarounds, seit Bill Gates meinte, er müsste unbedingt Software verkaufen statt Gebrauchtwagen? *grmmbl*)..
a) Diesen Block ändern auf:
:Processfile
...
for /f "skip=1 tokens=1-10 delims=;" %%a in (\\w8n00278\P800\%ordner%\%Var%) do (
For /f "delims== tokens=2" %%x in ('set max') do IF %%i GTR %%x Set /a "max=%%i"
echo %%a; %%b; %%c; %%d; %%e; %%f; %%g; %%h; %%i >> \\w8n00278\P800\%ordner%\PPW_auswertung.csv
)
:SetMymax Parameter1von1 ist der mit %max% zu vergleichende Wert
If %1 GTR %max% Set /a "max=%1"
goto: eof
:Processfile
...
for /f "skip=1 tokens=1-10 delims=;" %%a in (\\w8n00278\P800\%ordner%\%Var%) do (
call :SetMyMax %%i
echo %%a; %%b; %%c; %%d; %%e; %%f; %%g; %%h; %%i >> \\w8n00278\P800\%ordner%\PPW_auswertung.csv
)
...
Sollte mir noch ein Licht aufgehen, wo der Denk-/Syntaxfehler liegt, dann bist Du einer der ersten, die es erfahren.
Grüße
Biber
Hallo "Hoffentlich bald ganz Erleichterter" und Biber!
Tschuldigung, dass ich Biber's Frage an mich vorwegnehme und hier auch meinenSand Senf dazugebe - aber bei mir funktioniert (ohne konzeptionelle Änderung, nur mit kleinen kosmetischen Anpassungen) diese Version:
mit diesen beiden Dateien (mit der ersten alleine natürlich auch):
und
Ergebnis ("PPW_hoechstwert.csv"):
Grüße
bastla
P.S.: ... oder habe jetzt ich etwas übersehen?
Tschuldigung, dass ich Biber's Frage an mich vorwegnehme und hier auch meinen
@echo off & Setlocal EnableDelayedExpansion
set Pfad=\\w8n00278\P800
set "Pre=9100007521"
title sortiere Daten um fuer %Pre% ....
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CDATE=%%c%%b%%a
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CMonat=%%b
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CMonjahr=%%c%%b
::ren %Ziel% %cdate%
:: Variablenbelegung nach OS:
:: WinNT: a = Wochentag, b = Monat, c = Tag, d = Jahr
:: WinXP: a = Tag, b = Monat, c = Jahr, d= Wochentag
:: In diesem Fall: 15-10-Mi (Unter Win2000) und 2003-10-15 (unter XP)
::------------------------------------------------------------------------------------------
set ordner=%Pre%_%Cmonjahr%
Set /a max=0
echo Co;Jahr;Monat;Instanz;AnzDBLinks;AnzDBObjekte;AnzTableSpaces;DBSizeMB;TAV_MB_TAG >%Pfad%\%ordner%\PPW_auswertung.csv
echo Jahr Monat = %Cmonjahr%
echo Monat=%Cmonat%
for /f "delims=" %%a in ('dir /b /tc /od %Pfad%\%ordner%\%Pre%_%Cmonjahr%*_P800_DB.csv') do call :ProcessFile4 "%%a"
goto :eof
:ProcessFile4
set "Var=%~1"
echo %Var%
for /f "skip=1 tokens=1-10 delims=;" %%a in (%Pfad%\%ordner%\%Var%) do (
If %%i GTR !max! Set /a "max=%%i"
(echo %%a; %%b; %%c; %%d; %%e; %%f; %%g; %%h; %%i)>>%Pfad%\%ordner%\PPW_auswertung.csv
)
::FindStr+Suche exakt+am Ende der Zeile+ nach der Zeichenkette "Semikolon+Leerzeichen+%max%" "inDatei"
echo Co;Jahr;Monat;Instanz;AnzDBLinks;AnzDBObjekte;AnzTableSpaces;DBSizeMB;TAV_MB_TAG >%Pfad%\%ordner%\PPW_hoechstwert.csv
FOR /F "delims=" %%i in ('FindStr /E /C:"; %max%" %Pfad%\%ordner%\PPW_auswertung.csv') do set "OneMaxLine=%%i"
Echo\%OneMaxLine%>>%Pfad%\%ordner%\PPW_hoechstwert.csv
Co;Jahr;Monat;Instanz;AnzDBLinks;AnzDBObjekte;AnzTableSpaces;DBSizeMB;TAV_MB_TAG
9100007521;2008;4;PPW;0;172889;7;360912;31500
9100007521;2008;5;PPW;0;172999;7;369204;5800
9100007521;2008;5;PPW;0;173003;7;369204;7600
9100007521;2008;5;PPW;0;173003;7;369204;7600
9100007521;2008;5;PPW;0;173003;7;369204;7600
Co;Jahr;Monat;Instanz;AnzDBLinks;AnzDBObjekte;AnzTableSpaces;DBSizeMB;TAV_MB_TAG
9100007521;2008;5;PPW;0;173009;7;373155;30000
9100007521;2008;5;PPW;0;173012;7;373163;33333
9100007521;2008;5;PPW;0;173013;7;373164;27600
Co;Jahr;Monat;Instanz;AnzDBLinks;AnzDBObjekte;AnzTableSpaces;DBSizeMB;TAV_MB_TAG
9100007521; 2008; 5; PPW; 0; 173012; 7; 373163; 33333
Grüße
bastla
P.S.: ... oder habe jetzt ich etwas übersehen?
Hallo Sandgeeichter!
Vieleicht mit dieser Alternativschreibweise:
Hast Du übrigens mit den oben von mir geposteten Beispieldaten getestet (bei mir klappt es damit nämlich auch heute noch )?
Auch Biber's Alternativen funktionieren (natürlich ) bei mir ...
Grüße
bastla
Vieleicht mit dieser Alternativschreibweise:
>>%Pfad%\%ordner%\PPW_hoechstwert.csv Echo\%OneMaxLine%
Hast Du übrigens mit den oben von mir geposteten Beispieldaten getestet (bei mir klappt es damit nämlich auch heute noch )?
Auch Biber's Alternativen funktionieren (natürlich ) bei mir ...
Grüße
bastla
Moin Sandschleicher,
das liebe ich so am Skripten: alles lässt sich irgendwann mit gesundem Menschenverstand erklären.
Der Tipp-/Denkfehler ist folgender:
Beim Tokenizen der CSV-Datei haben wir behauptet, zulässige DELIMS sind die Semikola ";".
Die CSV-Datei allerdings enthält zusätzlich noch optisch gefällig anzusehende Leerzeichen.
Tja, und da die CMD von M$ und schon deshalb schlau ist, nimmt sie doch als Datentyp beim Vergleich...
... wenn links des Gleichheitszeichens eine 0 steht und rechts etwas, das mit " " (Leerzeichen) anfängt, z.B. " 35000"......was nimmt sie wohl an?
Richtig, CMD.exe nimmt an, dass wir Strings vergleichen wollen.
Also müssen wir ähnlich wie bei Heiratsanträgen, Teleshopping und Steuererklärungen etwas sorgfältiger formulieren, was wir haben wollen:
Streiche: for /f "skip=1 tokens=1-10 delims=;" %%a in..
Setze: for /f "skip=1 tokens=1-10 delims=; " %%a in...
---> zwei Delimiter: Semikolon und SPACE angeben ("delims=; " ).
Und bitte in dieser Reihenfolge, denn andersrum (SPACE und Semikolon=>"delims= ;") gibt es einen Syntaxfehler.
Grüße
Biber
das liebe ich so am Skripten: alles lässt sich irgendwann mit gesundem Menschenverstand erklären.
Der Tipp-/Denkfehler ist folgender:
Beim Tokenizen der CSV-Datei haben wir behauptet, zulässige DELIMS sind die Semikola ";".
Die CSV-Datei allerdings enthält zusätzlich noch optisch gefällig anzusehende Leerzeichen.
9100007521; 2008; 04; PPW; 0; 172889; 7; 360912; 31500
9100007521; 2008; 05; PPW; 0; 172999; 7; 369204; 5800
...
Tja, und da die CMD von M$ und schon deshalb schlau ist, nimmt sie doch als Datentyp beim Vergleich...
If %%i GTR !max! ....
Richtig, CMD.exe nimmt an, dass wir Strings vergleichen wollen.
Also müssen wir ähnlich wie bei Heiratsanträgen, Teleshopping und Steuererklärungen etwas sorgfältiger formulieren, was wir haben wollen:
Streiche: for /f "skip=1 tokens=1-10 delims=;" %%a in..
Setze: for /f "skip=1 tokens=1-10 delims=; " %%a in...
---> zwei Delimiter: Semikolon und SPACE angeben ("delims=; " ).
Und bitte in dieser Reihenfolge, denn andersrum (SPACE und Semikolon=>"delims= ;") gibt es einen Syntaxfehler.
Grüße
Biber
Hallo GanzWeicher und Biber!
Dass bereits die Ausgangsdatei Leerzeichen enthält, war aber nur zu erahnen - das erste (und einzige) konkrete Beispiel gab es erst hier - und dieses Beispiel enthält noch nicht einmal Semikola.
Für meine Tests habe ich daher angenommen, dass das Ausgabeformat nachträglich geändert worden wäre (da ansonsten ja "delims=;" keinen Sinn ergeben hätte) ...
Das Verschlimmbessern der zu erstellenden "PPW_auswertung.csv" mit zusätzlichen Leerzeichen hat mich zwar etwas irritiert, war aber für die "max"-Problematik nicht relevant.
Auch wenn's hier vorrangig Biber betroffen hat, kann ich nicht umhin, einen Wunsch für die Zukunft (und an zukünftige Fragesteller, auch wenn das hier kaum jemand lesen wird) zu formulieren:
Bitte im Rahmen der Problembeschreibung (möglichst originale) Testdaten in vernünftig (als Code) formatierter Form bereitstellen!
Grüße
bastla
P.S.: Andererseits wäre es ja fast schade gewesen, wenn dieser Thread schon vorzeitig erfolgsbedingt hätte geschlossen werden müssen ...
Dass bereits die Ausgangsdatei Leerzeichen enthält, war aber nur zu erahnen - das erste (und einzige) konkrete Beispiel gab es erst hier - und dieses Beispiel enthält noch nicht einmal Semikola.
Für meine Tests habe ich daher angenommen, dass das Ausgabeformat nachträglich geändert worden wäre (da ansonsten ja "delims=;" keinen Sinn ergeben hätte) ...
Das Verschlimmbessern der zu erstellenden "PPW_auswertung.csv" mit zusätzlichen Leerzeichen hat mich zwar etwas irritiert, war aber für die "max"-Problematik nicht relevant.
Auch wenn's hier vorrangig Biber betroffen hat, kann ich nicht umhin, einen Wunsch für die Zukunft (und an zukünftige Fragesteller, auch wenn das hier kaum jemand lesen wird) zu formulieren:
Bitte im Rahmen der Problembeschreibung (möglichst originale) Testdaten in vernünftig (als Code) formatierter Form bereitstellen!
Grüße
bastla
P.S.: Andererseits wäre es ja fast schade gewesen, wenn dieser Thread schon vorzeitig erfolgsbedingt hätte geschlossen werden müssen ...
Moin Langbleiber,
ist die Umkehrung unserer Kommentare von gestern.
Wenn mittlerweile eine Zeile in der AO3_hoechstwert.csv so aussieht:
statt wie gestern früh noch..
... dann wirst Du natürlich mit einem 'FindStr /E /C:"; %max%" nix mehr werden.
Denn die vorher so wortreich beschworene Sequenz "am Ende der Zeile+ nach der Zeichenkette "Semikolon+Leerzeichen+%max%" gibt es nur noch ohne Leerzeichen.
Grüße
Biber
ist die Umkehrung unserer Kommentare von gestern.
Wenn mittlerweile eine Zeile in der AO3_hoechstwert.csv so aussieht:
1500000700;2008;04;AO3;2;177826;92;1967415;32200
1500000700; 2008; 04; AO3; 2; 177826; 92; 1967415; 32200
... dann wirst Du natürlich mit einem 'FindStr /E /C:"; %max%" nix mehr werden.
Denn die vorher so wortreich beschworene Sequenz "am Ende der Zeile+ nach der Zeichenkette "Semikolon+Leerzeichen+%max%" gibt es nur noch ohne Leerzeichen.
Grüße
Biber