Komprimieren Sie Dateien mit dem Ausgabenamen, der dem übergeordneten Ordner mit Automator entspricht


0

Ich habe im Internet nach einer Lösung dafür gesucht. Ich möchte einen Automator-Workflow erstellen, der die ausgewählten Dateien komprimiert, den Namen des übergeordneten Verzeichnisses benennt und diese im aktuellen Verzeichnis speichert.

Ich kann keinen Weg finden, um das übergeordnete Verzeichnis zu erhalten. Ich bin hier irgendwie gegen eine Mauer gestoßen. Kann mir jemand helfen?

Antworten:


1

In Automator:

  1. Hinzufügen Ausgewählte Finder-Elemente abrufen
  2. Run Applescript hinzufügen

Fügen Sie diesen Code für das Applescript ein:

on run {input, parameters}
 set pathList to {}
 repeat with itemNum from 1 to count of input
 tell application "System Events"
 copy POSIX path of (container of (item itemNum of input)) to end of pathList
 end tell
 end repeat
 return pathList
end run

Ausgabe / Ergebnisse:

2013-05-11 00:06:02 +0000: Get Selected Finder Items completed
2013-05-11 00:06:02 +0000: Conversion from Files/Folders to Files/Folders completed
2013-05-11 00:06:02 +0000: Run AppleScript completed
2013-05-11 00:06:02 +0000: Workflow completed

{"/Users/Desktop", "/Users/Desktop", "/Users/Desktop"}

Ok, cool, ich habe versucht, den ersten Artikel des letzten mit zurückzugeben return first text item of pathList und ich bekomme eine Liste zurück. Mein Weg sowie "/Library/NetBoot/NetbootSP0". Wie kann ich nur den gewünschten Pfad zurückgeben? Gibt es auch eine Möglichkeit, das letzte Verzeichnis in diesem Pfad zurückzugeben?
tastytoast

@astrytoast - return item 1 of input um nur den ersten Artikel zu erhalten return pathList. Es sollte offensichtlich sein, wenn Sie das von mir bereitgestellte Codebeispiel studieren.
l'L'l

0

Sie können eine Aktion zum Erstellen eines Archivs verwenden und das resultierende Archiv umbenennen:

d=${1%/*}
start="$d/${d##*/}"
name="$start.zip"
i=2
while [[ -e $name ]]; do
  name="$start $i.zip"
  let i++
done
mv "$1" "$name"
open -R "$name"

Oder verwenden Sie eine Shell-Shell-Skriptaktion wie folgt:

for n in $(seq $(printf %s "$@" | tr -dc / | wc -c)); do
  uniq=$(printf %s\\n "$@" | cut -d / -f1-$n | uniq)
  [[ $uniq != *$'\n'* ]] && dir=$uniq || break
done

cd "${dir:-/}"
[[ $dir ]] && start=${dir##*/} || start=archive
name="$start.zip"

i=2
while [[ -e $name ]]; do
  name="$start $i.zip"
  let i++
done

zip -r "$name" -- "${@#$dir/}"
open -R "$name"

Wenn einige Dateien erweiterte Attribute oder Zugriffssteuerungslisten haben, werden sie von zip entfernt. Archive Utility und die Aktion Create Archive speichern sie im AppleDouble-Format.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.