Come posso copiare il link completo smb: // da un file in Finder?

3

Lavoro in un ambiente Windows con molte unità condivise diverse. Di solito ho finestre del Finder aperte a diverse unità condivise e cartelle nidificate. Ho creato un servizio (che ho creato in Automator) che mi permette di controllare e fare clic su "copia percorso completo" di un file o una cartella che ho selezionato nel Finder.

Quello che sto diventando sembra qualcosa di simile:

/Volumes/someFolder/someFile.docx

Tuttavia, se seleziono quell'elemento nel Finder e do command-i, vedo il percorso completo smb:// che include anche il nome del server. Vorrei copiare questo, in modo che assomigli a:

smb://Server/someParentFolder/someFolder/someFile.docx

Come posso creare un servizio in Automator che copierà l'intero percorso di rete smb:// nel file selezionato invece di quello che riporta come percorso completo?

Se Automator non copierà il percorso di rete smb:// , c'è un altro modo per creare un'utilità che faccia questo?

    
posta Clay 10.06.2014 - 03:27
fonte

3 risposte

2

Puoi fare clic con il tasto destro sul file e scegliere "Ottieni informazioni" - la finestra popup avrà una proprietà per Server che elenca il percorso URL completo con protocollo (ad esempio smb://example.com/Data/file.png )

    
risposta data 09.09.2014 - 03:40
fonte
1

Due anni dopo, questo è un problema fastidioso, e non trovando una buona risposta a una domanda simile, ho creato un servizio di automazione che lo fa come parte del lavoro necessario per creare un file .inetloc dal Finder.

Fondamentalmente, trova il punto di mount della condivisione corrente usando l'output del comando mount e lo abbina al percorso "montato", quindi incolla i due insieme come Iacopo menzionato sopra.

Ecco come puoi fare ciò che vuoi:

Passa l'oggetto finder selezionato a uno script di shell in automator (come variabile, non stdin) e usa questo script:

# 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.*$//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"

Quindi puoi usare un'azione "Copia negli Appunti" dopo lo script. Dovrebbe fare il trucco. Se qualcuno vuole che il servizio di automazione faccia il corrispondente file .inetloc, può essere trovato qui .

    
risposta data 28.08.2016 - 06:39
fonte
0

Penso che potresti facilmente aggiustarlo con un po 'di mele e "sed".

Non so come sia il tuo apple originale, ma presumo tu abbia una variabile che contiene il percorso /Volumes/someFolder/someFile.docx come hai detto, chiamiamo quella variabile thePath . Tutto quello che devi fare è prendere thePath , rimuovere /Volumes/ e aggiungere smb://Server/someParentFolder/

Questo codice:

#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

allora sei tutto pronto, usa relativePath per il tuo output invece di thePath e dovrebbe funzionare, almeno ha funzionato per me:)

    
risposta data 28.02.2015 - 20:05
fonte

Leggi altre domande sui tag