0 votes

Applescript : Copier/Dupliquer uniquement si la taille requise est atteinte.

Comment écrire la condition de duplication si la taille requise est respectée en applescript ?

C'est ce que j'ai :

set src to POSIX path of "path here"
set dst to POSIX path of "path here"
(*Some if statement here to check size of file*)
duplicate files in folder (POSIX file src as alias) to (POSIX file dst as alias)

J'essaie de faire en sorte qu'il ne soit dupliqué que si la taille du fichier est inférieure à une certaine valeur et j'ai du mal à trouver l'instruction if dont j'ai besoin. J'ai pensé à itérer manuellement à travers chaque fichier et à vérifier la taille et la duplication, mais je n'ai pas réussi à trouver le code pour cela non plus.

Toute aide est la bienvenue.

1voto

Mockman Points 847

En supposant que vous ne prévoyez pas de dupliquer d'innombrables milliers de fichiers, voici un simple script pour dupliquer des fichiers d'un dossier à un autre.

Tout d'abord, il génère une liste de fichiers dans le dossier source. Il parcourt ensuite chaque élément de la liste et, si la taille du fichier est comprise dans la plage, il ajoute le fichier à une liste correspondante. Une fois cette opération terminée, il duplique les fichiers correspondants dans le dossier de destination.

tell application "Finder"
set srcFol to ((path to downloads folder as text) & "here:")
set dstFol to ((path to desktop as text) & "there:")

set everyFile to (get files of folder srcFol as alias list)
set sizedFiles to {}
repeat with aFile in (a reference to everyFile)
    set sz to size of aFile
    if sz is greater than 200000 and sz is less than 299000 then
        set end of sizedFiles to aFile
        set label index of aFile to 4 -- used to highlight matching files during testing
    end if
end repeat

duplicate sizedFiles to dstFol with replacing
end tell

NB : la ligne 'set label index' met simplement une étiquette de couleur sur chaque fichier. Je l'utilise pendant les tests pour mettre en évidence les fichiers qui sont dupliqués. Mettez-la en commentaire une fois que vous avez confirmé que tout fonctionne. Si vous ne souhaitez pas que les fichiers existants soient écrasés, supprimez la ligne "set label index". with replacing .

Si vous prévoyez de dupliquer des dossiers contenant de nombreux fichiers (ou des sous-dossiers), vous pouvez envisager de prendre les mesures suivantes do shell script avec quelque chose comme ditto ou rsync.

1voto

wch1zpink Points 6067

Ce qui suit AppleScript Le code vous permet de choisir un dossier pour rechercher les fichiers par taille. Il vous permet ensuite de choisir un dossier de destination pour y copier le résultat des fichiers. Et enfin, il vous permet d'entrer les critères de taille des fichiers à rechercher.

Il copiera ensuite les fichiers qui répondent aux critères de recherche dans le dossier de destination de votre choix.

property searchFolder : missing value
property destinationFolder : missing value

activate
set {fileSize, recursiveSearch} to {text returned, button returned} of ¬
    (display dialog "Search For Files Options:" & linefeed & linefeed & ¬
        "The provided example means searching for files greater than" & ¬
        " 10 MB and less than 50 MB." default answer "-size +10M -size -50M" buttons ¬
        {"Cancel", "Search Recursively", "Search"} default button 3 ¬
        with title "Search For Files" with icon 1)

if recursiveSearch = "Search" then
    folderChoices()
    set folderDepth to " -type f -mindepth 1 -maxdepth 1 "
else if recursiveSearch = "Search Recursively" then
    folderChoices()
    set folderDepth to " -type f -mindepth 1 "
end if

do shell script "find " & searchFolder & folderDepth & fileSize ¬
    & " -exec cp -p {} " & destinationFolder & " \\;"

on folderChoices()
    activate
    set searchFolder to quoted form of POSIX path of (choose folder with prompt ¬
        "Choose A Source Folder To Search" with invisibles)
    activate
    set destinationFolder to quoted form of POSIX path of (choose folder with prompt ¬
        "Choose A Destination Folder To Place Copied Files" with invisibles)
end folderChoices

J'ai également ajouté l'option de recherche récursive dans tous les dossiers de votre dossier choisi.

enter image description here

Vous pouvez également mélanger des unités de taille différente comme ceci :

  • -size +100k -size -1M (plus de 100 kB et moins de 1 MB)
  • -size +500M -size -1G (supérieur à 500 Mo et inférieur à 1 Go)
  • -size -3M (moins de 3 MB)

enter image description here

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X