Viele Dateien durchsuchen und inhaltsabhängig verschieben
Hallo, ich habe jede Menge CSV Dateien, die nach diesem Schema aufgebaut sind:
Messstelle:;Messtellenbezeichnug;;
Kanal:;Kanalbezeichnung;;
Gerätenummer:;Nummer;;
Datum;Zeit;Wert;Wertestatus
Datum;Zeit;Wert;Wertestatus
Datum;Zeit;Wert;Wertestatus
…
…
Wertestatus ist entweder leer, E, F, V
Ich kann die Dateien nur ohne Status oder mit Status E weiterverarbeiten, die mit Status F und V muss ich von Hand anfassen und kontrollieren, was mit dem Messgerät war.
Deshalb würde ich gern alle Dateien durchsuchen lassen und die Dateien mit Status F und V in ein anderes Verzeichnis verschieben. Dateien mit F und V in der Messtellenbezeichnug sollen nicht verschoben werden.
Kann mir da bitte einer helfen, Danke schon mal
MFG teufel112
Messstelle:;Messtellenbezeichnug;;
Kanal:;Kanalbezeichnung;;
Gerätenummer:;Nummer;;
Datum;Zeit;Wert;Wertestatus
Datum;Zeit;Wert;Wertestatus
Datum;Zeit;Wert;Wertestatus
…
…
Wertestatus ist entweder leer, E, F, V
Ich kann die Dateien nur ohne Status oder mit Status E weiterverarbeiten, die mit Status F und V muss ich von Hand anfassen und kontrollieren, was mit dem Messgerät war.
Deshalb würde ich gern alle Dateien durchsuchen lassen und die Dateien mit Status F und V in ein anderes Verzeichnis verschieben. Dateien mit F und V in der Messtellenbezeichnug sollen nicht verschoben werden.
Kann mir da bitte einer helfen, Danke schon mal
MFG teufel112
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 184784
Url: https://administrator.de/forum/viele-dateien-durchsuchen-und-inhaltsabhaengig-verschieben-184784.html
Ausgedruckt am: 05.04.2025 um 05:04 Uhr
11 Kommentare
Neuester Kommentar
Aloha,
ja eine Idee kommt mir, allerdings die Rückfrage: Wie ist das Datum formatiert, denn ich würde per
Wobei, fangen die Werte immer ab Zeile 4 an?
greetz André
ja eine Idee kommt mir, allerdings die Rückfrage: Wie ist das Datum formatiert, denn ich würde per
findstr
nach /B [0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]
z.B. suchen, um dann den letzten Tokens in dieser Zeile zu prüfen aber ohne genaue Angabe, nach welchem Muster man suchen kann, wird es schwer.Wobei, fangen die Werte immer ab Zeile 4 an?
greetz André
Aloha,
hm vielleicht funktioniert's ja auch schon auf die ganz einfache Weise, in dem Glauben (bisher ohne Angabe), dass die Messtellenbezeichnung oder die Kanalbezeichnung nicht denselben Inhalt haben können wie der Status:
das
greetz André
hm vielleicht funktioniert's ja auch schon auf die ganz einfache Weise, in dem Glauben (bisher ohne Angabe), dass die Messtellenbezeichnung oder die Kanalbezeichnung nicht denselben Inhalt haben können wie der Status:
@echo off & setlocal
set "Quelle=E:\Skripte"
set "Ziel=E:\Test"
for %%s in ("%Quelle%\*.csv") do findstr ";F ;V">nul "%%s" && echo move "%%s" "%Ziel%"
pause
das
echo
dient der Voransicht, kannst es ja mal ggf. prüfen, eigentlich wollte ich mit /E
arbeiten aber da mag der Interpreter nur mit dem Ende der gesamten Datei arbeiten ...greetz André
du hast leider nicht geschrieben unter welchem system es laufen soll.
unter windows könnte man es gut mit powershell machen, wenn du software runterladen kannst und das ist dann schon mehr plattformunabhängig: "awk" oder "perl".
das sind auch meine 3 (powershell, awk, perl)
so wie die datei aufgebaut ist würde ich unter linux auf alle fälle awk nutzen.
noch eine frage kannst du mal mir 3 beispiel dateien zukommen lassen mit testdaten für mich.
gruß michael
ps:
habe mal einen ansatz in awk (einzeiler gemacht:
unter windows könnte man es gut mit powershell machen, wenn du software runterladen kannst und das ist dann schon mehr plattformunabhängig: "awk" oder "perl".
das sind auch meine 3 (powershell, awk, perl)
so wie die datei aufgebaut ist würde ich unter linux auf alle fälle awk nutzen.
noch eine frage kannst du mal mir 3 beispiel dateien zukommen lassen mit testdaten für mich.
gruß michael
ps:
habe mal einen ansatz in awk (einzeiler gemacht:
awk -F ";" '{if (NR > 3){if ($NF == "F" || $NF == "V")print $0}}' test.txt
Aloha,
so einfach leider nicht, denn selbst bei der Suche nach dem Ende mit dem Begriff, also hier nach
Es gäbe eben noch die Möglichkeit das Ganze stark zu erweitern und wirklich exakt zu prüfen ... aber nur, wenn es wirklich notwendig ist
Ich kann ja ma Phil oder bastla anschreiben, ob die 'ne Idee haben, warum das mit dem Filtern des Endes nicht so will, wie ich es mir denke.
greetz André
so einfach leider nicht, denn selbst bei der Suche nach dem Ende mit dem Begriff, also hier nach
;F$ ;V$
passiert dasselbe wie beim Schalter /E
, der Befehl prüft dann wirklich nur das Ende der Ausgabe, statt der Zeile, allerdings ist mir unklar weshalb.Es gäbe eben noch die Möglichkeit das Ganze stark zu erweitern und wirklich exakt zu prüfen ... aber nur, wenn es wirklich notwendig ist
greetz André
hab hier jetzt mal einen ersten entwurf in powershell:
gruß michael
$datei = Get-content c:\test.txt
$a = 0
$b = 0
$array = @()
$datei | Foreach-Object {
$array += $_
}
for($i = 0; $i -le ($array.length -1); $i++){
if ($i -ge 3){
if ($array[$i] -match "F$" -or $array[$i] -match "V$" ){
"==========="
"TEST: " + $i, $array[$i]
} #else {"kein treffer"}
}
}
gruß michael