Prüfen Sie, ob die Datei vorhanden ist, dann verschieben Sie die alte Datei um und verschieben Sie die neue

Hier ist, was ich versuche zu tun:

Ich habe einen Ordner, der ein Skript und eine Datei enthält. Die Datei ist eine ältere Kopie einer Datei, die sich in diesem Pfad befindet: /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A.

Ich versuche, ein AppleScript zu erstellen, das den Finder aktiviert, den oben genannten Pfad öffnet, prüft, ob die betreffende Datei existiert, benennt diese Datei in .new um, wenn dies der Fall ist, und verschiebt dann die ältere Version aus dem Ordner, der das Skript enthält.

Wenn das AppleScript alternativ ausgeführt wird, wenn die .new-Version der Datei im oben genannten Pfad vorhanden ist, möchte ich, dass das Skript die ältere Version der Datei (die zuvor kopiert wurde) in .old umbenennt und die .new aus entfernt die ursprüngliche Datei (dh im Wesentlichen rückgängig machen, was es zuvor getan hat, aber ohne die hinzugefügte Datei zu entfernen).

Egal, was ich versucht habe, ich konnte das Skript bisher nicht dazu bringen, sich ordnungsgemäß zu authentifizieren, um die Datei umzubenennen (der betreffende Ordner erfordert offensichtlich die Genehmigung des Administrators, bevor Änderungen vorgenommen werden können).

Das Skript dazu zu bringen, den Finder zu aktivieren und den Ordner zu öffnen, ist ziemlich trivial (z. B. tell application "Finder" activate open ("/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A" as POSIX file) end tellfunktioniert gut), aber das Skript dazu zu bringen, sich danach zu authentifizieren, die Existenz der Datei(en) zu überprüfen und dann entsprechend zu handeln, war ziemlich erfolglos Aufgabe.

Jede Hilfe wird sehr geschätzt.

Es könnte einfacher sein, das meiste davon in Bash zu schreiben und dann das Shell-Skript von AppleScript aus zu sutheticieren und auszuführen

Antworten (1)

do shell script "
d=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A
if [[ -e $d/Apple80211 ]]; then
  mv $d/Apple80211 $d/Apple80211.new
  cp ~/path/to/Apple80211 $d/Apple80211
else
  mv $d/Apple80211 $d/Apple80211.old
  mv $d/Apple80211.new $d/Apple80211
fi" with administrator privileges