Newsgroup: it.comp.macintosh
Titolo: [APPLESCRIPT] Selezionare una cartella e cancellare file

Vorrei poter selezionare una cartella tramite un applescript e
cancellare i file invisibili (quelli col .). Chi mi aiuta? :-))

 cancellare i file invisibili (quelli col .). Chi mi aiuta? :-))
A livello teorico:
selezioni la cartella con :
set theDir to choose folder with prompt "Select the Destination Folder"
esegui uno script bash che rimuove tutti i files .* dalla cartella
selezionata convertita in POSIX.
Se ho bestemmiato qualcuno mi corregga.
-- 
Poochie©

 A livello teorico:
ho provato così:
tell application "Finder"
        set theDir to choose folder with prompt "Seleziona cartella"
        set fileNames to list folder theDir without visibles
 
        repeat with i from 1 to count fileNames
                set ilNome to the name of item (fileNames's item i as
string) of theDir
                if first character of ilNome is equal to "." then
                        set ilPath to ((theDir as string) & ilNome)
                        delete file (fileNames's item i)
                end if
 
        end repeat
end tell
ma mi da errore nel comando delete file (can't get.. seguito dal
percorso del file).

 percorso del file).
iil realtà avevo messo without visibles ma non mi si fila... cmq non è
quello il problema...

 quello il problema...
tell application "Finder"
        set theDir to choose folder with prompt "Seleziona cartella"
        set fileNames to list folder theDir without visibles
 
        set k to 0
 
        repeat with i from 1 to count fileNames
                set ilNome to the name of item (fileNames's item i as
string) of theDir
                if first character of ilNome is equal to "." then
                        set ilPath to ((theDir as string) & ilNome)
                        set k to k + 1
                        delete ilPath
                end if
        end repeat
 
        display dialog "Ho rimosso " & k & " files"
end tell

 stratagemmino.
Non ho la più pallida idea di come si possa fare però... c'è qualche
anima pia che mi aiuta? :-)

 anima pia che mi aiuta? :-)
Soluzione in 5 minuti con objc:
int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        int errori,cancellazioni,totale;
        errori = cancellazioni = totale = 0;
 
        NSString *path = [[NSString alloc] initWithCString: argv[1]];
        BOOL isDir;
        if ([[NSFileManager defaultManager] fileExistsAtPath: path
isDirectory: &isDir] == YES) {
                if (isDir == YES) {
                        NSArray *list = [[NSArray alloc] initWithArray:
[[NSFileManager defaultManager] directoryContentsAtPath: path]];
                        int k;
                        for (k=0; k < [list count]; k++) {
                                NSString *item = [list objectAtIndex:k];
                                if ([item characterAtIndex: 0] == '.') {
                                        if ([[NSFileManager
defaultManager] removeFileAtPath: [NSString
stringWithFormat:@"%@/%@",path,item] handler: nil] == YES) {
                                                NSLog(@"cancellato:
'%@'",item);
                                                cancellazioni++;
                                        } else {
                                                NSLog(@"impossibile
rimuovere: '%@'",item);
                                                errori++;
                                        }
                                }
                        }
                        totale = [list count];
                        [list release];
                } else {
                        NSLog(@"Il path specificato non e' una
cartella");
                }
        } else {
                NSLog(@"Il path scelto non č una cartella o non esiste!
Porca zozza stacci attento");
        }
 
        NSLog(@"Rimossi %d files invisibili (%d errori) di %d
files",cancellazioni, errori,totale);
        [path release];
    [pool release];
    return 0;
}

 Soluzione in 5 minuti con objc:
Alla faccia... Soluzione in 5 secondi con AppleScript:
tell application "Finder"
activate
set theDir to choose folder with prompt "Seleziona cartella"
set thePath to POSIX path of theDir
do shell script "rm -r " & thePath & ".*"
end tell
Due problemi: non funziona se nel percorso della cartella ci sono spazi
(non si può usare la forma quoted perché se no non "funziona"
l'asterisco) e restituisce il messaggio d'errore che non può cancellare
"." e "..". 
-- 
Ve lo meritate Gil Amelio!

 "." e "..". 
Ahimè il problema sta proprio lì. Ci sono sicuramente degli spazi. Cmq
c'ho fatta una stupida applicazione sopra quel codice. Non è niente di
che però magari a qualcuno può interessare (ho i miei dubbi!).
Il link è: 
http://www.cocoaworks.org/software/iCleaner.zip
.