[AppleScript] Mappen "flattenen"

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • endness
  • Registratie: Maart 2006
  • Laatst online: 18-09 09:30
Ik heb een filmcollectie op m'n pc, in de map "Films". In deze map staan submappen die de naam hebben van de film, en in die mappen wéér een submap, "VIDEO_TS". In die map staan dan de filmbestanden.

Voorbeeldje:
Films/16 Blocks/VIDEO_TS/VIDEO_TS.IFO

Nu wil ik alle filmbestanden uit de VIDEO_TS map verplaatsen naar de map met de filmnaam, en de VIDEO_TS map verwijderen. Na wat zoeken op internet het volgende gevonden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
tell application "Finder"
    activate
    set theTopFolder to (selection as alias)
    --display dialog (theTopFolder as text)
    repeat with EachSubDir in (get every folder of folder theTopFolder)
        try
            --display dialog (EachSubDir as text)
            repeat with Eachfile in (get every file of folder (EachSubDir as alias))
                try
                    move Eachfile to theTopFolder
                end try
            end repeat
            delete folder (EachSubDir as alias)
        end try
    end repeat
end tell


Dit scriptje pakt dus de geselecteerde folder (in dit geval de filmfolder, 16 Blocks), en doet precies wat ik wil. Aangezien ik 300+ films heb waarmee ik dit wil doen, wil ik het liever automatisch laten gaan. Hier even wat aanpassingen die 't geheel duidelijker moeten maken:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
tell application "Finder"
    activate
    set Films to (selection as alias)
    --display dialog (Films as text)
    
    repeat with EachSubDir in Films
        
        repeat with EachSubDir in (get every folder of (EachSubDir as alias))
            repeat with EachSubDir in (get EachSubDir of folder Films)
                try
                    --display dialog (EachSubDir as text)
                    repeat with Eachfile in (get every file of folder (EachSubDir as alias))
                        try
                            move Eachfile to Films
                        end try
                    end repeat
                    delete folder (EachSubDir as alias)
                end try
            end repeat
            
        end repeat
    end repeat
end tell


Hier klopt natuurlijk niks van, vooral op regel 8. Ik ben (zoals waarschijnlijk duidelijk is) geen AppleScript kenner, maar het lijkt me dat EachSubDir een algemeen "commando" is, en geen variable. Ik heb 't er alleen neergezet zodat duidelijk is wat ik wil.

De enige foutmelding die ik op dit moment krijg is een fout afkomstig van Finder: Verwachtte een verwijzing.
In google is deze fout niet terug te vinden, ook niet als ik deze vertaal naar het engelstalige Expected (a) alias.

Iemand die me kan helpen?

[ Voor 12% gewijzigd door endness op 04-05-2010 01:52 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
endness schreef op dinsdag 04 mei 2010 @ 01:40:
Hier klopt natuurlijk niks van
Want? Het zou handig zijn als je aangeeft wat er niet klopt volgens jou
endness schreef op dinsdag 04 mei 2010 @ 01:40:
(vooral regel 8 gaat het goed fout)
Wat gaat er fout dan?
endness schreef op dinsdag 04 mei 2010 @ 01:40:
maar ik heb geen idee hoe het wél moet. Iemand die me kan helpen?
Begin eens met onze Quickstart te hanteren als je een topic opent ;) Gelieve je topicstart aan te vullen met informatie waar we wat mee kunnen en niet naar onze glazen bol hoeven grijpen ( Afbeeldingslocatie: http://tweakimg.net/g/forum/images/icons/edit.gif ).

Ik ben geen Applescript kenner maar het lijkt me sowieso dat je op regel 6, 8 en 9 de variabele(?) EachSubDir hergebruikt wat natuurlijk niet de bedoeling kan zijn. Dus daar verschillende variabelen van maken zou al moeten helpen. Verder zou ik persoonlijk eens gaan kijken naar iets recursiefs.

[ Voor 18% gewijzigd door RobIII op 04-05-2010 01:53 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • endness
  • Registratie: Maart 2006
  • Laatst online: 18-09 09:30
Het is me gelukt, na nog wat verder pielen. Scriptje staat nu te draaien, loopt allemaal lekker.

Het resultaat is misschien niet al te netjes, maar werken doet het:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
tell application "Finder"
    activate
    set Films to (selection as alias)
    --display dialog (Films as text)
    
    repeat with EachSubDir in (get every folder of folder Films)
        --display dialog (EachSubDir as text)
        set SubMap to (EachSubDir as alias)
        repeat with EachSubDir in (get every folder of (EachSubDir as alias))
            repeat with EachSubDir in (get every folder of folder SubMap)
                try
                    --display dialog (EachSubDir as text)
                    repeat with Eachfile in (get every file of folder (EachSubDir as alias))
                        try
                            move Eachfile to SubMap
                        end try
                    end repeat
                    delete folder (EachSubDir as alias)
                end try
            end repeat
            
        end repeat
    end repeat
end tell