Wie kann ich den vollständigen smb://-Link aus einer Datei im Finder kopieren?

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?

@anthonyg Das ist kein Duplikat. Ich versuche nicht, SMB-Freigabepfade im Windows-Stil zu erstellen, die korrekt gestartet werden. Ich möchte den SMB-Freigabepfad im OS X-Stil. Ich fand den anderen Beitrag jedoch für ein anderes Problem nützlich.
Es gibt eine Option in WinShortcutter, um den Pfad entweder im Windows-Stil oder im OS X-Stil (Schrägstriche) zu kopieren - nicht sicher, ob das das tut, was Sie wollen.
Das habe ich gesehen, danke. Das ist nicht das, wonach ich suche, da es nicht den vollständigen Pfad mit dem Servernamen enthält, wie es der smb://Link tut.
Aha. TotalFinder ( totalfinder.binaryage.com ) bietet eine ganze Reihe von Möglichkeiten zum Kopieren von Pfaden (Windows, Posix, UNC, HFS, Terminal, URL), aber ich kann nichts mit dem Servernamen sehen.

Antworten (3)

Sie können mit der rechten Maustaste auf die Datei klicken und "Get Info" auswählen - das Popup-Fenster hat eine Eigenschaft, für Serverdie der vollständige URL-Pfad mit Protokoll aufgeführt ist (z. B. smb://example.com/Data/file.png)

funktioniert bei mir nicht: es gibt keine Eigenschaft für Server.

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 habe dies für den Einsatz in unserem Büro modifiziert. Danke fürs Schreiben!

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.docxwie 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 relativePathfür Ihre Ausgabe statt thePathund es sollte funktionieren, zumindest hat es bei mir funktioniert :)