Textdatei auslesen und damit Dateien umbenennen

O

Orush

Aktives Mitglied
Thread Starter
Dabei seit
24.12.2009
Beiträge
526
Reaktionspunkte
77
Hallo zusammen,

möchte mehrere Dateien in einem Oder per Script umbenennen. Ein Teil des Inhalts gebe ich per Script fest mit, der andere Teil soll aus einer Text Datei kommen die pro Zeile ein Wort enthält. Ich habe unten den bisherigen Code eingefügt. Den Umbennungsstring zu ergänzen usw. ist alles klar, nur wie lese ich eine Datei ein bzw. wie öffne ich eine Datei. Kann man den Return also den Zeilenumbruch als Trennzeichen mitgeben, so dass die Namen einfach untereinander stehen.

Code:
set episodefolder to choose folder

display dialog "Wie ist der Name der Serie" default answer ""
set seriesname to text returned of result


display dialog "Welche Season" default answer ""
set Season to text returned of result


tell application "Finder"
	
	set numbering to the count of document files of the folder episodefolder
	
	set filename to every document file of the folder episodefolder
	
	repeat with numberid from 1 to numbering
		
		set currentfile to item numberid of filename
		
		if numberid ≤ 9 then
			
			set the name of currentfile to (seriesname & "-" & "S0" & Season & "E0" & (numberid as string) & "." & name extension of currentfile)
			
		else
			
			set the name of currentfile to (seriesname & "-" & "S0" & Season & "E" & (numberid as string) & "." & name extension of currentfile)
			
		end if
		
	end repeat
	
	
end tell
 
Zuletzt bearbeitet:
Code:
set meineDatei to ((path to desktop folder) as string) & "test.txt"

set DateiReferenz to open for access meineDatei
set x to read DateiReferenz as text
close access DateiReferenz

set TextListe to every paragraph of x
 
Wie muss ich das denn in meine Schleife einfügen ?
 
das liesst Deine Textdatei und setzt den Inhalt zeilenweise in eine Liste.
Die Liste kannst Du dann abarbeiten.

Wo soll der Text denn hin?
 
Also wenn wir davon ausgehen dass in dem Beispiel es 5 Zeilen sind wird der string so zusammengebaut. Das passiert ja in der Schleife:

Wenn in der Textdatei folgendes steht:

Pilot
Landung

set the name of currentfile to (seriesname & "-" & "S0" & Season & "E0" & (numberid as string) & "." & name extension of current file)

Game of Thrones - S01E01 - Pilot.mkv
Game of Thrones - S01E02 - Landung.mkv

Wie du ja oben im Script siehst bauen ich ja den Namen soweit korrekt zusammen. Ich will halt den Folgennamen aus der Textdatei ziehen und das muss ich ja damit es pro Datei passiert innerhalb der Schleife machen.
 
Wenn die Datei nur gelesen werden soll, dann ist ein Öffnen/Schließen der Datei nicht nötig, es reicht

every paragraph of (read POSIX file "/Pfad/Datei.txt")


 
  • Gefällt mir
Reaktionen: madu
Und wie greife ich dann auf jede Zeile einzeln zu und sage ihm das enter quasi der delimiter ist ?
 
So:

set theList to every paragraph of (read POSIX file "/Pfad/Datei.txt") --Zede Zeile in Liste speichern
repeat with anItem in theList--Liste durchgehen
log anItem--mach was
end repeat
 
Code:
set episodefolder to choose folder

display dialog "Wie ist der Name der Serie" default answer ""
set seriesname to text returned of result

display dialog "Welche Season" default answer ""
set Season to text returned of result

set meineDatei to ((path to desktop folder) as string) & "test.txt"
set TextListe to every paragraph of (read file meineDatei)

tell application "Finder"
	
	set numbering to the count of document files of the folder episodefolder
	
	set filename to every document file of the folder episodefolder
	
	repeat with numberid from 1 to numbering
		
		set currentfile to item numberid of filename
		set episodeName to item numberid of TextListe
		
		if numberid ≤ 9 then
			
			set the name of currentfile to (seriesname & "-" & "S0" & Season & "E0" & (numberid as string) & "-" & episodeName & "." & name extension of currentfile)
			
		else
			
			set the name of currentfile to (seriesname & "-" & "S0" & Season & "E" & (numberid as string) & "-" & episodeName & "." & name extension of currentfile)
			
		end if
		
	end repeat
	
	
end tell


/edit: angepasst nach Pills Tipp
 
Wenn die Datei nur gelesen werden soll, dann ist ein Öffnen/Schließen der Datei nicht nötig
danke, hab obiges AS noch entsprechend angepasst.


@TE: Damit das Ganze so funktioniert wie von Dir aufgegleist, muss die Namen-Liste natürlich in der Reihenfolge sein, wie die Files im Ordner.
 
Vielen Dank für das Script und jetzt sind wir genau da wo ich auch bin. Ich habe eine RTF Datei in txt umbenannt und meine Dateien heisen z.B.:

Game of Thrones-S01E01-{\rtf1\ansi\ansicpg1252\cocoartf1265

Woran liegt das
 
rtf nicht in txt umbenennen sonder als txt abspeichern ;)

Menu => Format
 
Ist das die Option unter "Format" in reinen Text umwandeln ?
 
Versuch macht kluch ;)
 
Ich habe und es geht vielen vielen Dank
 
Habe festgestellt, dass er das erste item in der Textdatei sauber schreibt und dann aber einen Fehler bringt. Er hat wohl Probleme mit dem Zeilenumbruch. Ich möchte nach dem Dateinamen quasi den Delimiter Enter benutzen. Geht das ?
 
Orush per PM schrieb:
ich dachte ich hätte es jetzt im Griff aber anscheinend klemmt noch was worauf ich mir aber keine Reim machen kann. Das ist meine Textdatei

Der Norden vergisst nicht
Die Nachtlande
Was tot ist, kann niemals sterben
Garten der Knochen
Der Geist von Harrenhal
Alte und neue Götter
Ein Mann ohne Ehre
Der Prinz von Winterfell
Schwarzwasser
Valar morghulis

Wenn ich das Script laufen lass, kommt er bis zu item 3 und bringt dann den Fehler:

error "„item 3 of {\"Der Norden vergisst nicht\", \"D\"}“ kann nicht gelesen werden." number -1728 from item 3 of {"Der Norden vergisst nicht", "D"}

Als würde er den Zeilenumbruch nicht sehen. Hast du da eine Idee ?

Ich hab's mit Deiner Liste und meinem Script eben ausprobiert, ausser dass der Umlaut stört klappt es problemlos: :noplan:

attachment.php


Hast Du die Liste auch wirklich als reines Textfile?
 

Anhänge

  • Bildschirmfoto 2014-01-27 um 11.56.46.png
    Bildschirmfoto 2014-01-27 um 11.56.46.png
    63,1 KB · Aufrufe: 179
Also nochmals zur Sicherheit


Das ist das Script:

Code:
set episodefolder to choose folder

display dialog "Wie ist der Name der Serie" default answer ""
set seriesname to text returned of result

display dialog "Welche Season" default answer ""
set Season to text returned of result

set meineDatei to ((path to desktop folder) as string) & "test.txt"
set TextListe to every paragraph of (read file meineDatei)

tell application "Finder"
	
	set numbering to the count of document files of the folder episodefolder
	
	set filename to every document file of the folder episodefolder
	
	repeat with numberid from 1 to numbering
		
		set currentfile to item numberid of filename
		set episodeName to item numberid of TextListe
		
		if numberid ≤ 9 then
			
			set the name of currentfile to (seriesname & "-" & "S0" & Season & "E0" & (numberid as string) & "-" & episodeName & "." & name extension of currentfile)
			
		else
			
			set the name of currentfile to (seriesname & "-" & "S0" & Season & "E" & (numberid as string) & "-" & episodeName & "." & name extension of currentfile)
			
		end if
		
	end repeat
	
	
end tell

Dann öffne ich TextEdit und fügen den Text ein

und klick danach auf Format und dann auf in reinen Text umwandeln.

Beim Abspeichern wähle ich :

2.jpg

Meine Datei sieht danach wie folgt aus

1.jpg

Trotzdem bekomme ich den Fehler
 
Das Skript funktioniert so nur mit document files. Einfach überall "document file" ersetzen mit "item" bzw. "document files" mit "items", dann sollte es klappen.
 
  • Gefällt mir
Reaktionen: madu
Das gibts ja nicht. Vielen Dank :)

Eine Frage noch bin recht neu in diesem Thema. Wie kann ich denn das Applescript einfach mit Doppelklick starten, also ohne immer den AppleScript Editor aufzumachen, und wie bringe ich ihn beim benennen dazu Umlaute richtig einzutragen.
 
Zurück
Oben Unten