Textinhalt suchen und damit txt-Datei umbenennen?

S

ShnikShnak

Aktives Mitglied
Thread Starter
Dabei seit
11.04.2007
Beiträge
1.122
Reaktionspunkte
43
Hi

Mir ist schon klar, Automator kann nicht Kaffee kochen...
zudem habe ich vom Automator und von Scripts null Ahnung, aber dennoch hätte ich da mal ein Problem.

Momentan bezeichne ich txt-Dateien um, kann mir aber besseres vorstellen.
Hier die Situation.

Ich habe tausende txt Dateien. Die txt-Dateien sind mit Artikelnummern bezeichnet. Alle Dateien haben den Inhalt betreffend die gleiche Listenstruktur. zB.
Farbe...blau
Gewicht...53
Material...Kupfer
Jahr...1964
Code...en

usw. sowie eine Menge mehr Informationen

Ich möchte nun in den jeweiligen txt-Dateien nach mehreren Kriterien suchen, deren Ergebnis herausführen und im Idealfall der txt Datei in deren Bezeichnung anfügen. Momentan mache ich das manuell. :(

Das würde beispielsweise bedeuten ich suche in der txt-Datei gleichzeitig nach den Stichworten Farbe, Jahr, Code und das Ergebnis wird dann automatisch/halbautomatisch der txt-Datei-Bezeichnung angefügt

zB.
vorher: 237492715.txt
nachher: 237492715 (blau 1964 en).txt

Ich gebe zu, sehr speziell, aber es war zumindest mal eine Abwechslung mal diesen Text als Frage einzustellen als die stupide manuelle Änderung der Dateien.
 
Vergiss Automator: der kann sowas nicht.

Mit AppleScript ginge das theoretisch, aber es wird ziemlich hässlich und sehr umständlich. Denn es geht bei Deinem Problem darum, den Inhalt der .txt-Datei zu parsen, also bestimmte Zeichenketten in bestimmten Kontexten zu finden. AppleScript hat aber leider keine eingebauten Suchfunktionen für Text.

An Deiner Stelle würde ich's mit einer Skriptsprache wie Perl, Python oder Ruby machen. Von Python z.B. weiß ich sicher, dass es (eingebaute) Bibliotheken zum Umbenennen von Dateien hat und sehr gute eingebaute Suchmechanismen für Text, unter anderem auch reguläre Ausdrücke.

Wenn man ein Bisschen googelt, gibt's für solche Probleme (Stapelverarbeitung von Textdateien) fast immer schon eine fertige Lösung, die Du nur ein wenig anpassen musst.
 
oder du nimmst einfach eine rename app, die auch nach inhalt umbenennen kann...
 
Das ist ja schön zu lesen, das eine Lösung auf anderem Wege möglich ist.
Ich bin da jetzt mal dran.
Und welche rename app benennt denn nach Inhalt um?
 
Hallo!

So hässlich ist das doch gar nicht mit AppleScript -- Vorausgesetzt, die Dateien sehen wirklich so aus, wie hier beschrieben

So könnte dann ein Grundgerüst in etwa so aussehen:


Code:
set d to path to desktop

tell application "TextEdit"
	set fd to front document
	set n to name of fd
	tell n
		text 1 thru -5
	end tell
	set r to the result
	
	
	set x to second word of first paragraph of fd
	set y to second word of second paragraph of fd
	set z to second word of third paragraph of fd
	
	save fd in file ((d & r & " " & "(" & x & " " & y & " " & z & ")" & ".rtf") as string)
end tell

Gruß
 
So könnte dann ein Grundgerüst in etwa so aussehen:

Top .... ich staune gerade
funktioniert genau so wie gewünscht!

DANKE!!!

Jetzt muss ich noch herausbekommen wie ich es evtl. individuell anpassen kann
 
Hallo!

Na da kann ich dir dann auch noch helfen :)

Du hast dir das Skript ja angeschaut. Statt second word kann man auch third word oder last word nehmen.
Genau so verhält es sich mit den Absätzen (paragraphs)

Des weiteren möchtest du deine Files bestimmt nicht auf dem Desktop abgelegt haben.
Im nachfolgenden Skript kannst du einen Zielordner wählen (oder einen neuen erstellen).
Wähle alle .txt Files aus und fertig

Gruß

Code:
set d to choose folder

set cf to choose file of type {"txt"} with multiple selections allowed

repeat with aFile in cf
	tell application "TextEdit"
		open aFile
		
		set fd to front document
		set n to name of fd
		tell n
			text 1 thru -5
		end tell
		set r to the result
		
		
		set x to second word of first paragraph of fd
		set y to second word of second paragraph of fd
		set z to second word of third paragraph of fd
		
		save fd in file ((d & r & " " & "(" & x & " " & y & " " & z & ")" & ".txt") as string)
		
		close fd
		
	end tell
end repeat
 
Schön! Ich bin begeistert und auch schon fertig.
Du hast mir sehr geholfen und ich habe eine Menge Zeit geschenkt bekommen.

Jetzt wollte ich das Skript etwas anpassen und auch anderweitig verwenden.
Ändere ich second word in fourteenth word, so erhalte ich eine Fehlermeldung.
Wie gebe ich Zahlen über 10 an?

Eine Frage hätte ich noch zum Abschluss.
Wie füge ich ein individuelles Wort ein, welches nicht im Text vorkommt, und wie entferne ich eine Leerstelle.
zB.
vorher: 237492715 (blau grün 1964 en).txt
nachher: 237492715 (blaugrün DANKE 1964 en).txt
 
Hallo!

Statt first word (usw) geht auch word 1
Also dem entsprechend z.B. word 14

Der Name setzt sich aus einem String zusammen. Die einzelnen Teile sind mit & verbunden:
& " " (und ein Leerzeichen)
& " Bitte " ( und " gern geschehen :) " )

Gruß
 
Zurück
Oben Unten