Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Datei suchen und teil im Dateinamen ersetzten

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
dashmo
•->
•->


Anmeldedatum: 04.01.2011
Beiträge: 9

BeitragVerfasst am: 30.01.2015 - 11:54    Titel: Datei suchen und teil im Dateinamen ersetzten Antworten mit Zitat

Hallo Freunde,


ich suche nach Hilfe für folgendes Problem:

Ich habe einen Ordner wo Daten drin liegen format:

123456-TODO-KD-CPY
123458-DONE-KD-CPY
123459-CPY
123457-NEW-CPY

Der Nutzer sucht nun im Dialog Feld nach zb 123456 oder 123458 ohne den ganzen Sachen hinten dran.
Die ersten 6 Nummern sind eindeutig und einmalig kommen also kein zweites mal vor.
ich möchte nun das er mir das CPY durch OK ersetzt wird.

Ich dachte erst das geht durch ein shell script klappt aber nicht dann habe ich es mit text delimiters versucht komme aber nicht weiter.

Vielleicht kann mir einer von euch ja weiter helfen und den knoten lösen?


Code:
set theReturnedItems to (display dialog "Type Number plz" & return & return & "Number: " default answer "123456")
set numberip to the text returned of theReturnedItems
set pfad to (choose folder)
tell application "Finder"
   set numberip2 to name of folder (pfad & numberip)
end tell
rename(numberip2, "ö|CPY| B", "oe|OK|B", "|")

on rename(input, srchList, replList, separator)
   if class of srchList is string then
       set AppleScript's text item delimiters to separator
       set srchList to every text item of srchList
       set replList to every text item of replList
   else
       set AppleScript's text item delimiters to ""
   end if
   repeat with i from 1 to (count of srchList)
       set srch to item i of srchList
       set repl to item i of replList
       set AppleScript's text item delimiters to srch
       set the temp to every text item of input
       set AppleScript's text item delimiters to repl
       set input to temp as string
   end repeat
   set AppleScript's text item delimiters to ""
   return input
end rename
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grenzli
•-->
•-->


Anmeldedatum: 05.02.2010
Beiträge: 39

BeitragVerfasst am: 31.01.2015 - 16:07    Titel: Antworten mit Zitat

Wenn es Daten sind, findest du sie über

set Fund to do shell script "find " & quoted form of POSIX path of (choose folder) & " -name *" & usereingabe & "*"

da das script einen string (den posix pfad zur datei) in die variable fund schreibt, und man über das shell script 'sed' innerhalb von strings zeichenketten ersetzen kann, machen wir's doch so...

dazu geben wir mittels echo den string (pfad zur datei) an sed und sagen dann, dass er das CPY durch OK ersetzen soll.

set neuername to do shell script " echo " & Fund & " | sed 's/CPY/OK/g' "

jetzt haben wir also einen string in dem das CPY durch OK ersetzt ist, der immernoch der pfad zu der Datei ist. (sozusagen)

das shell script "mv" kann entweder Dateien verschieben, oder umbennen, also nehmen wir "Fund" von oben und "neuername" und verwursteln das im mv-shel script:

do shell script "mv " & quoted form of Fund & " " & quoted form of neuername

man sollte hier und da noch ein paar fehlerabfänger einbauen:
- was tun, wenn nichts gefunden wird
- was tun, wenn doch 2mal die gleiche zahl gefunden wird
- usw

hier und da ein display dialog hilft und schützt in der versuchsphase vor bösen überraschungen...

viel erfolg.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dashmo
•->
•->


Anmeldedatum: 04.01.2011
Beiträge: 9

BeitragVerfasst am: 02.02.2015 - 13:05    Titel: Antworten mit Zitat

HI,

EIN MEGA GROßES DANKESCHÖN Smile es klappt.

Gibt es irgendwo eine Seite wo man sich in Shell script bezogen auf AS einlesen kann ich denke ich habe es so weit verstanden dank deiner tollen Erklärung.

Was bedeuteted das Quoted Form im Shell script und was bewirkt es?
und das name * und nach usereingabe & "*" für was steht denn da das * genau?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grenzli
•-->
•-->


Anmeldedatum: 05.02.2010
Beiträge: 39

BeitragVerfasst am: 03.02.2015 - 18:57    Titel: Antworten mit Zitat

Eine Seite über shell script und AS ist mir nicht bekannt.
Wie ich es bisher verstanden habe, brauchen einige (alle?) Shell scripte eine Eingangsmenge an Text, dateien oder ähnlichem.

Das Stückchen aus deinem Script zeigt, dass es anhand des EchoScript, mit dem man die Datei bzw deren String auf die Shell Reise schickt, und mittels des | (Pipe) an das nächste Script schickt, das geht im prinzip vielleicht sogar unendlich lang, dass das ergebnis des einen Scripts (echo) der anfangswert des nächsten ist usw.

Die Arbeitsweisen der einzelnen Programme/Scripte kann findet man über google. Auch problemlösungen, wie find, search and replace, search in files etc.
wenn man die Suche um "example" oder so erweitert, findet man auch mal hier und da was brauchbares.

Um deine Fragen nicht unbeantwortet zu lassen:
"quoted form" heißt nicht mehr, als dass der wert der variable in einzelne Anführungsstriche gesetzt wird, z.B. wird ein Dateipfad beim ersten Leerzeichen oder "-" abgetrennt da in shell scripten ein Leerzeichen den nächsten Teil des Scriptes einleiten kann, daher ist es eigentlich immer besser, Pfade und Variableninhalte mittels 'quoted form' anzugeben, da auch Satzzeichen anders interpretiert werden könnten, was man nicht immer möchte.

Das Shell Script/Programm 'Find' arbeitet mit sogenannten Wildcards (google), die unter anderem das * sein können.

Kurz der Befehl aufgedröselt:

"find " & quoted form of POSIX path of (choose folder) & " -name *" & usereingabe & "*"

bzw

"find '/Users/Max Mustermann/Desktop/' -name *123456*"

bei Find gibt man zuerst den Oberordner an, der durchsucht werden soll, auch hier die quoted form, da find sonst im Ordner "/Users/Max " suchen würde, den gibts ja gar nicht.

-name sagt dem Programm, dass wir die Suche per Name gestalten möchten, möglich wäre z.b. auch -type d (für directory/Ordner) oder -type f (für File/Datei), oder andere Parameter, die sich ergoogeln lassen und die man hintereinander setzen kann.

- die * bedeuten, dass vor und hinter den Zahlen noch weitere Zeichen stehen könnten, in unserem fall würde der Befehl auch Dateien oder Ordner finden, die 00123456, oder 123456asdf, oder asdf123456asdf etc heißen.

Wie man die Sachen am besten findet und vor allem, wie man unerwünschte Sachen ausklammert, ist hier dann der Spass.


Grüße
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dashmo
•->
•->


Anmeldedatum: 04.01.2011
Beiträge: 9

BeitragVerfasst am: 04.02.2015 - 09:14    Titel: Antworten mit Zitat

HI Grenzli,

ich weiß gar nicht wie ich dir danken soll...für die Tips und die tollen Erklärungen das hilf mir sehr.

Vielen lieben Danke das du dir die Zeit genommen hast.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
masterkey
•->
•->


Anmeldedatum: 15.03.2015
Beiträge: 1

BeitragVerfasst am: 15.03.2015 - 12:15    Titel: Infos zu «do shell script» Antworten mit Zitat

ein guter startpunkt um etwas über die verwendung von « do shell script» in applescript zu erfahren:

https://developer.apple.com/library/mac/technotes/tn2065/_index.html

viel spass!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 18.03.2015 - 14:37    Titel: Antworten mit Zitat

grenzli hat Folgendes geschrieben:
Wenn es Daten sind, findest du sie über

set Fund to do shell script "find " & quoted form of POSIX path of (choose folder) & " -name *" & usereingabe & "*"

OH NEIN!

Grober Fehler!

Code:
…" -name " & (quoted form of ("*" & usereingabe & "*"))

ist, was man nehmen sollte. Stell Dir mal vor die Usereingabe wäre
Code:
;rm -rf /

VERLOREN!

IMMER! (Ich wiederhole:) IMMER "quoted form of" verwenden, wenn es darum geht, Daten unbekannten Inhalts an die Shell weiter zu leiten.
_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grenzli
•-->
•-->


Anmeldedatum: 05.02.2010
Beiträge: 39

BeitragVerfasst am: 20.03.2015 - 11:48    Titel: Antworten mit Zitat

ja, da hatter recht!
danke!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter