BATCH Verschieben u. Sortieren Textdateien gemäß Metadaten
Hallo an alle! ☺
Ich bin neu hier und arbeite gerade mit einer sprachwissenschaftlichen Datenbank, bei der sämtliche Texte verschiedener Autoren und Textsorten (z.B. Tagebucheintrag etc.) in einem einzigen Ordner als txt-Dateien im Format "Text_000124", "Text_000125" (immer 6 Ziffern) usw. gespeichert sind. Zusätzlich existiert eine Excel-Datei, in der für jede txt die entsprechenden Metadaten wie Autor oder Textsorte aufgeführt sind. Nun sollen alle Dateien gemäß bestimmter Metadaten in neue Ordner verschoben werden, z.B. sortiert nach Autoren (ein Ordner mit allen zugehörigen Textdateien für jeden Autor). Jetzt meine Frage: gibt es unter Umständen eine Möglichkeit, eine Batch-Datei zum Verschieben der Dateien zu schreiben, die die Exceltabelle beim Ordnen miteinbezieht, oder ist dies schlicht unmöglich, wenn die entsprechenden Informationen wie zB Autor nicht direkt im Namen der txt-Datei (z.B. Kafka_000111) festgehalten sind?
Falls man die Dateinamen entsprechend ändert, wäre es toll, für diesen Fall eine Lösungshilfe zu bekommen. Tausend Dank an alle, die mir weiterhelfen können!!!
LG
Airic
Ich bin neu hier und arbeite gerade mit einer sprachwissenschaftlichen Datenbank, bei der sämtliche Texte verschiedener Autoren und Textsorten (z.B. Tagebucheintrag etc.) in einem einzigen Ordner als txt-Dateien im Format "Text_000124", "Text_000125" (immer 6 Ziffern) usw. gespeichert sind. Zusätzlich existiert eine Excel-Datei, in der für jede txt die entsprechenden Metadaten wie Autor oder Textsorte aufgeführt sind. Nun sollen alle Dateien gemäß bestimmter Metadaten in neue Ordner verschoben werden, z.B. sortiert nach Autoren (ein Ordner mit allen zugehörigen Textdateien für jeden Autor). Jetzt meine Frage: gibt es unter Umständen eine Möglichkeit, eine Batch-Datei zum Verschieben der Dateien zu schreiben, die die Exceltabelle beim Ordnen miteinbezieht, oder ist dies schlicht unmöglich, wenn die entsprechenden Informationen wie zB Autor nicht direkt im Namen der txt-Datei (z.B. Kafka_000111) festgehalten sind?
Falls man die Dateinamen entsprechend ändert, wäre es toll, für diesen Fall eine Lösungshilfe zu bekommen. Tausend Dank an alle, die mir weiterhelfen können!!!
LG
Airic
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 389735
Url: https://administrator.de/forum/batch-verschieben-u-sortieren-textdateien-gemaess-metadaten-389735.html
Ausgedruckt am: 11.04.2025 um 15:04 Uhr
13 Kommentare
Neuester Kommentar
Moin,
ja, das geht. Dafür würde ich die Powershell bemühen. Dort kannst Du entweder die Exceldatei direkt oder nach Umwandlung in ein csv einlesen und die Datensätze auswerten. Das könnte dann ungefähr so aussehen:
Das würde sofern nicht vorhanden den Ordner mit dem Autorennamen erstellen und die Datei in den Ordner verschieben. Das Umbenennen ginge ähnlich.
hth
Erik
ja, das geht. Dafür würde ich die Powershell bemühen. Dort kannst Du entweder die Exceldatei direkt oder nach Umwandlung in ein csv einlesen und die Datensätze auswerten. Das könnte dann ungefähr so aussehen:
$data = import-csv exceldatei.csv -delimiter ";"
foreach($dataset in $data) {
if(-not (test-path $dataset.autor)) {
new-item -Path $dataset.autor -ItemType directory
}
move-item $dataset.filename -destination $dataset.autor
}
Das würde sofern nicht vorhanden den Ordner mit dem Autorennamen erstellen und die Datei in den Ordner verschieben. Das Umbenennen ginge ähnlich.
hth
Erik
Moin,
Das ist erstmal alles in einem Ordner und die Unterordner werden auch da erstellt. Das muss aber nicht so sein. Das kann man auch variabel gestalten. Das sollte erstmal nur ein Ansatz sein, wie man das lösen könnte. Außerdem weiß ich ja nicht, was denn so in der Exceldatei drinsteht. Steht da z. B. der komplette Pfad auf die Datei, dann würde der Skriptschnipsel die Datei aus dem Ordner, in der sie ist, in den neuen verschieben. Jetzt gibt es zwei Möglichkeiten: Du versuchst das selbst und bittest um Hilfe, wenn Du Probleme hast. Oder Du beauftragst jemanden, das Skript zu schreiben.
Liebe Grüße
Erik
Zitat von @Airic87:
Hi Erik!
Erstmal vielen vielen Dank!!! Müssen für diesen PowerShell-Befehl, wie du ihn eingegeben hast, Excel/csv-Datei und sämtliche txt-Dateien im gleichen Ordner liegen und wo genau werden dann die neuen Ordner erstellt? Vielen Dank noch mal!
Hi Erik!
Erstmal vielen vielen Dank!!! Müssen für diesen PowerShell-Befehl, wie du ihn eingegeben hast, Excel/csv-Datei und sämtliche txt-Dateien im gleichen Ordner liegen und wo genau werden dann die neuen Ordner erstellt? Vielen Dank noch mal!
Das ist erstmal alles in einem Ordner und die Unterordner werden auch da erstellt. Das muss aber nicht so sein. Das kann man auch variabel gestalten. Das sollte erstmal nur ein Ansatz sein, wie man das lösen könnte. Außerdem weiß ich ja nicht, was denn so in der Exceldatei drinsteht. Steht da z. B. der komplette Pfad auf die Datei, dann würde der Skriptschnipsel die Datei aus dem Ordner, in der sie ist, in den neuen verschieben. Jetzt gibt es zwei Möglichkeiten: Du versuchst das selbst und bittest um Hilfe, wenn Du Probleme hast. Oder Du beauftragst jemanden, das Skript zu schreiben.
Liebe Grüße
Erik
Moin,
Wenn ich den in der PowerShell ISO eingebe, kommen nur unzählige Fehlermeldungen... wie genau muss ich das eingeben (sorry für meinen Noob-ismus ;))
Welche Fehlermeldungen?
Liebe Grüße
Erik
Wenn ich den in der PowerShell ISO eingebe, kommen nur unzählige Fehlermeldungen... wie genau muss ich das eingeben (sorry für meinen Noob-ismus ;))
Welche Fehlermeldungen?
Liebe Grüße
Erik
Moin,
Ja, die Kodierung kannst Du beim import-csv mit dem Parameter -encoding angeben. Welche musst du selbst herausfinden.
Ich vermute mal, da das aus Excel kommt, dass es utf8 ist. Aber das ist halt die Frage, wie Du das exportiert hast. Ich mache solche Dateien einfach in einem Editor (in meinem Fall kate) auf, der mir die Kodierung anzeigt, und gucke nach.
hth
Erik
Zitat von @Airic87:
Hi Erik!
Ich habe es mittlerweile geschafft, dass die Ordner erstellt und die Dateien auch korrekt verschoben werden... yeah!!! Vielen Dank noch mal!
Jetzt sind in der Ordnernamen nur noch alle Umlaute als ? markiert... da wurde scheinbar der falsche Zeichensatz verwendet, in der CSV sind die Autorennamen nämlich korrekt mit Umlaut dargestellt. Hast du da noch eine Idee?
Hi Erik!
Ich habe es mittlerweile geschafft, dass die Ordner erstellt und die Dateien auch korrekt verschoben werden... yeah!!! Vielen Dank noch mal!
Jetzt sind in der Ordnernamen nur noch alle Umlaute als ? markiert... da wurde scheinbar der falsche Zeichensatz verwendet, in der CSV sind die Autorennamen nämlich korrekt mit Umlaut dargestellt. Hast du da noch eine Idee?
Ja, die Kodierung kannst Du beim import-csv mit dem Parameter -encoding angeben. Welche musst du selbst herausfinden.
hth
Erik
Moin,
Dann musst Du beim Export aus Excel umkodieren auf ANSI. Wie das geht, guckst Du hier:
https://praxistipps.chip.de/excel-zeichenkodierung-einstellen_34641
Entsprechend dann beim Import das Encoding auswählen. Dann sollte es gehen.
hth
Erik
Zitat von @Airic87:
Danke! Es ist utf8. also erste Zeile einfach $data = import-csv exceldatei.csv -delimiter ";" -encoding utf8?
Hab das probiert, aber es kommen immer noch falsche Zeichen....
Danke! Es ist utf8. also erste Zeile einfach $data = import-csv exceldatei.csv -delimiter ";" -encoding utf8?
Hab das probiert, aber es kommen immer noch falsche Zeichen....
Dann musst Du beim Export aus Excel umkodieren auf ANSI. Wie das geht, guckst Du hier:
https://praxistipps.chip.de/excel-zeichenkodierung-einstellen_34641
Entsprechend dann beim Import das Encoding auswählen. Dann sollte es gehen.
hth
Erik