Trattare con le estensioni dei nomi di file - bash vs oascript

1

Ho uno script che chiude le finestre aperte, ma funziona solo quando ho abilitato la preferenza "Mostra tutte le estensioni del nome file" del Finder. Esiste un modo efficace per eseguire ciò indipendentemente dallo stato dell'estensione dell'estensione del nome file? Suppongo che potrei provare a chiudere il file con e senza l'estensione, ma questa è una brutta soluzione

cd somedir
for file in * ; do
  echo file name is $file

osascript<<EOF
  tell application "Preview"
  close (every window whose name is "$file")
  end tell
EOF
  sleep 1
done
    
posta Leonard 04.11.2018 - 21:39
fonte

1 risposta

1

Poiché la tua variabile di shell $file avrà sempre un'estensione di file intatta, devi usare la proprietà path per Anteprima document , che contiene il percorso completo del file di il file aperto, inclusa l'estensione del file:

cd somedir
for file in * ; do
  echo file name is $file

osascript<<EOF
  tell application "Preview"
    close (every document whose path ends with "$file")
  end tell
EOF
  sleep 1
done

Questo è lento, tuttavia, anche senza il ritardo di sleep . Un altro modo per farlo è enumerare i file in AppleScript:

osascript<<EOF
  use sys : application "System Events"
  use Preview : application "Preview"

  script
    property list : displayed name of every file ¬
                    in sys's folder "$somedir"
  end script

  repeat with f in result's list
    tell Preview's document named f to if exists ¬
    then close
  end repeat
EOF

Questo è quasi istantaneo e la proprietà displayed name usa specificamente il nome come viene visualizzato in Finder , con o senza la sua estensione. Pertanto, corrisponde alla proprietà name del documento Anteprima .

    
risposta data 04.11.2018 - 22:02
fonte

Leggi altre domande sui tag