airic87
Goto Top

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

Content-Key: 389735

Url: https://administrator.de/contentid/389735

Printed on: April 23, 2024 at 17:04 o'clock

Member: erikro
Solution erikro Oct 17, 2018 at 09:31:01 (UTC)
Goto Top
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:

$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
Member: Airic87
Airic87 Oct 17, 2018 at 10:04:09 (UTC)
Goto Top
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!

Viele Grüße
Airic
Member: erikro
Solution erikro Oct 17, 2018 at 10:33:07 (UTC)
Goto Top
Moin,

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!


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. face-wink

Liebe Grüße

Erik
Member: Airic87
Airic87 Oct 17, 2018 updated at 10:41:50 (UTC)
Goto Top
Danke nochmal für deine Zeit! Das passt, wenn das alles in einem Ordner passiert. ☺ Ich probier es mal aus. In der Excel gibt es eine Spalte mit der Nummer aus dem Namen der txt (also für Text_000122.txt steht hier 000122) und eine mit dem Autorennamen.
Member: Airic87
Airic87 Oct 23, 2018 updated at 14:47:10 (UTC)
Goto Top
Hi Erik,

muss noch mal nerven... habe das ausprobiert und bin leider an mehreren Dingen gescheitert. Ich habe jetzt eine CSV mit folgenden Spalten: filename (Text-000122 usw.) und autor. Der komplette Pfad auf die jeweilige Datei steht nicht drin, muss der drinstehen für deinen Code? 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 ;))


Aktueller Stand ist also: ein Ordner mit sämtlichen Text-Files und besagter CSV.

Habe gerade gesehen, dass ich die Ordner gemäß Autor sogar erstellt habe, aber die Dateien werden noch nicht rein verschoben...
Member: erikro
erikro Oct 24, 2018 at 06:34:09 (UTC)
Goto Top
Moin,

Zitat von @Airic87:

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
Member: Airic87
Airic87 Oct 24, 2018 at 12:20:30 (UTC)
Goto Top
Hi Erik!
Ich habe es mittlerweile geschafft, dass die Ordner erstellt und die Dateien auch korrekt verschoben werden... yeah!!! Vielen Dank noch mal! face-smile

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?
Member: erikro
erikro Oct 24, 2018 at 13:43:35 (UTC)
Goto Top
Moin,

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! face-smile

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. face-wink 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
Member: Airic87
Airic87 Oct 25, 2018 at 10:48:07 (UTC)
Goto Top
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....
Member: erikro
erikro Oct 26, 2018 at 06:07:10 (UTC)
Goto Top
Moin,


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....

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
Member: Airic87
Airic87 Oct 30, 2018 at 13:44:57 (UTC)
Goto Top
Hi Erik,

Wirklich auf ANSI? Ist das nicht Standard in Excel? Sollte in meinem Fall nicht auf UTF 8 umgestellt werden?

Viele Grüße
Member: erikro
erikro Oct 30, 2018 at 13:47:34 (UTC)
Goto Top
Ja, UTF8. Da war ich wohl schon müde. face-wink
Member: Airic87
Airic87 Oct 30, 2018 at 13:51:14 (UTC)
Goto Top
Kein Problem, geht uns allen mal so ;)