Ich arbeite in einer Windows-Umgebung mit vielen verschiedenen freigegebenen Laufwerken. Ich habe normalerweise Finder-Fenster für verschiedene freigegebene Laufwerke und verschachtelte Ordner geöffnet. Ich habe einen Dienst eingerichtet (den ich in Automator erstellt habe), mit dem ich bei gedrückter Strg-Taste klicken und den vollständigen Pfad einer Datei oder eines Ordners kopieren kann, den ich im Finder ausgewählt habe.
Was ich bekomme, sieht in etwa so aus:
/Volumes/someFolder/someFile.docx
Wenn ich jedoch dieses Element im Finder auswähle und Befehl-i ausführe, sehe ich den vollständigen smb://
Pfad, der auch den Servernamen enthält. Ich möchte das kopieren, so dass es so aussieht:
smb://Server/someParentFolder/someFolder/someFile.docx
Wie kann ich in Automator einen Dienst erstellen, der den gesamten Netzwerkpfad in die ausgewählte Datei kopiert, smb://
anstatt den vollständigen Pfad anzugeben?
smb://
Wenn Automator den Netzwerkpfad nicht kopiert , gibt es eine andere Möglichkeit, ein Dienstprogramm zu erstellen, das dies tut?
Sie können mit der rechten Maustaste auf die Datei klicken und "Get Info" auswählen - das Popup-Fenster hat eine Eigenschaft, für Server
die der vollständige URL-Pfad mit Protokoll aufgeführt ist (z. B. smb://example.com/Data/file.png
)
Zwei Jahre später bleibt dies ein ärgerliches Problem, und da ich keine gute Antwort auf eine ähnliche Frage fand, habe ich einen Automator-Dienst erstellt, der dies als Teil der Arbeit tut, die erforderlich ist, um eine .inetloc-Datei aus dem Finder zu erstellen.
Grundsätzlich findet es den Einhängepunkt der aktuellen Freigabe anhand der Ausgabe des Einhängebefehls und vergleicht ihn mit dem „eingehängten“ Pfad und fügt dann die beiden wie oben erwähnt Iacopo zusammen.
So können Sie tun, was Sie wollen:
Übergeben Sie das ausgewählte Finder-Element an ein Shell-Skript in Automator (als Variable, nicht stdin) und verwenden Sie dieses Skript:
# Match the server address and share/subfolder to the mount point,
# using 'mount' command output:
FIRSTPART=$(mount | grep "$(echo $1 | cut -d '/' -f 1-3)" | sed 's/^.*@\(.*\) on.*$/\1/g')
# Glue on the rest of the path
SECONDPART=$(echo $1 | cut -d '/' -f 4-)
WHOLETHING=$FIRSTPART/$SECONDPART
# now we url encode it
# oneliner modified from http://stackoverflow.com/a/10797966
ENCODED=$(echo "$WHOLETHING" | curl -Gso /dev/null -w %{url_effective} --data-urlencode @- "" | cut -c 3- | rev | cut -c 4- | rev)
# and we need to change the %2Fs back into /s, and add the smb://
FINAL=smb://$(echo $ENCODED | sed 's/\%2F/\//g')
echo "$FINAL"
Dann können Sie nach dem Skript eine Aktion "In die Zwischenablage kopieren" verwenden. Sollte den Trick machen. Wenn jemand möchte, dass der Automator-Dienst die entsprechende .inetloc-Datei erstellt, kann diese hier gefunden werden .
Ich denke, Sie könnten das mit ein bisschen Applescript und "sed" leicht beheben.
Ich weiß nicht, wie Ihr ursprüngliches Applescript aussieht, aber ich nehme an, Sie haben eine Variable, die den Pfad enthält, /Volumes/someFolder/someFile.docx
wie Sie sagten. Nennen wir diese Variable thePath
. Alles, was Sie tun müssen, ist zu nehmen thePath
, zu entfernen /Volumes/
und hinzuzufügensmb://Server/someParentFolder/
Dieser Code macht das:
#the following line only removes /Volumes/someFolder, it could also add smb://ecc but it would look like a big mess, I think it's easier to add that prefix in a separate line of code
set relativePath to do shell script "echo \"" & thePath & "\" | sed 's/.*Volumes\/someFolder//'"
#now you add the smb prefix or whatever you want
set relativePath to "smb://Server/someParentFolder" & relativePath
dann sind Sie fertig, verwenden Sie relativePath
für Ihre Ausgabe statt thePath
und es sollte funktionieren, zumindest hat es bei mir funktioniert :)
honiggrün
Ton
honiggrün
Ton
smb://
Link tut.honiggrün