¿Cómo puedo copiar el enlace completo smb: // desde un archivo en el Finder?

3

Trabajo en un entorno Windows con muchas unidades compartidas diferentes. Normalmente tengo las ventanas del Finder abiertas a diferentes unidades compartidas y carpetas anidadas. Tengo un servicio configurado (que creé en Automator) que me permite hacer clic con el botón secundario y "copiar la ruta completa" de un archivo o carpeta que he seleccionado en el Finder.

Lo que estoy recibiendo se ve algo como:

/Volumes/someFolder/someFile.docx

Sin embargo, si selecciono ese elemento en el Finder y hago el comando-i, veo la ruta completa smb:// que también incluye el nombre del servidor. Me gustaría copiar esto, para que se vea como:

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

¿Cómo puedo crear un servicio en Automator que copie la ruta de red smb:// completa al archivo seleccionado en lugar de la que informa como la ruta completa?

Si Automator no copia la ruta de red smb:// , ¿hay alguna otra forma en que pueda crear una utilidad que haga esto?

    
pregunta Clay 10.06.2014 - 03:27

3 respuestas

2

Puede hacer clic con el botón derecho en el archivo y elegir "Obtener información": la ventana emergente tendrá una propiedad para Server que muestra la ruta completa de la URL con el protocolo (por ejemplo, smb://example.com/Data/file.png )

    
respondido por el Jeremy 09.09.2014 - 03:40
1

Dos años más tarde, esto sigue siendo un problema molesto, y al no encontrar una buena respuesta a una pregunta similar, hice un servicio de automatización que hace esto como parte del trabajo necesario para crear un archivo .inetloc desde el Finder.

Básicamente, encuentra el punto de montaje del recurso compartido actual utilizando la salida del comando de montaje y lo compara con la ruta 'montada', luego une los dos como Iacopo mencionado anteriormente.

Así es como puedes hacer lo que quieras:

Pase el elemento del buscador seleccionado a un script de shell en automator (como variable, no stdin) y use este 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"

Luego puede usar una acción "Copiar en el Portapapeles" después de la secuencia de comandos. Debería hacer el truco. Si alguien desea que el servicio automator haga el archivo .inetloc correspondiente, se puede encontrar aquí .

    
respondido por el Yashka Oreza 28.08.2016 - 06:39
0

Creo que podrías arreglar ese pizca fácilmente con un poco de AppleScript y "sed".

No sé cómo se ve tu applecript original, pero supongo que tienes una variable que contiene la ruta /Volumes/someFolder/someFile.docx como dijiste, llamemos a esa variable thePath . Todo lo que tienes que hacer es tomar thePath , eliminar /Volumes/ y agregar smb://Server/someParentFolder/

Este código hace eso:

#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

entonces estás listo, usa relativePath para tu salida en lugar de thePath y debería funcionar, al menos funcionó para mí :)

    
respondido por el Iacopo Boccalari 28.02.2015 - 20:05

Lea otras preguntas en las etiquetas