Necesita automatizar una ruta SMB en una ruta UNC antes de enviar a clientes Win10

Nuevo aquí, pero tengo dificultades para armar un AppleScript que básicamente tomará un enlace SMB y lo convertirá en un enlace UNC antes de enviarlo a un par de clientes Win10.

Toda la misma red, todos usamos un SNS NAS y es para enlaces de Adobe Premiere. Podemos hacer todo esto manualmente, pero los editores no tienen tiempo ni paciencia para convertir cada enlace. Estamos buscando un script automatizado que podamos integrar como un servicio que convierta el texto seleccionado.

Encontré el artículo a continuación, pero es al revés de lo que estamos buscando. Intenté invertir todas las funciones pero no pude hacer que funcionara correctamente.

https://gist.github.com/anonymous/2211017

También sería increíble si el "servicio" que se crea simplemente copia la entrada en el portapapeles para que el usuario final pueda pegarla en un par de cosas diferentes, como el correo electrónico y Slack Messenger.

Espero que alguien pueda ayudarme o guiarme en la dirección correcta. He estado buscando en Google por esto durante aproximadamente una semana.

EDITAR ** Ejemplos a continuación

Antigua ruta 'smb://servidor/carpeta'

Nueva ruta '\\servidor\carpeta'

Eliminé mi respuesta original después de algunos comentarios de klanomath porque en ese momento era tarde y necesitaba dormir. Agregué una advertencia, la nota en la parte superior de mi respuesta, y la recuperé. Con suerte, como ejemplo, cubre sus necesidades; sin embargo, si necesita más que eso, entonces anule la fecha de su pregunta en consecuencia y si necesita ayuda adicional con la codificación, veré qué puedo hacer por usted.

Respuestas (2)

tal vez un poco tarde para la fiesta, pero usamos una aplicación de terceros para esto en el trabajo

convertidor de enlace

funciona bastante bien, especialmente porque puede hacer clic derecho en cualquier archivo en una unidad UNC y copiar el nombre de la ruta para obtener el resultado de Windows

NOTA: ¡Esta respuesta solo pretende ser un ejemplo cuando la ruta SMB, aparte de los dos puntos, las barras diagonales y las barras diagonales inversas y sin espacios, solo contiene caracteres alfanuméricos en el nombre! Si necesita tener en cuenta algo más, es decir, leer los comentarios de esta respuesta, deberá modificar el código según sus necesidades. Dicho esto, en todos mis años como administrador de sistemas de red e ingeniero de sistemas de red, nunca creé recursos compartidos que contuvieran espacios u otra cosa que no fuera la necesidad de dos puntos, barras diagonales, barras diagonales inversas y caracteres alfanuméricos y, por lo tanto, este ejemplo simple es todo lo que necesito para traducir cualquier ruta SMB que haya usado, por ejemplo, a una ruta UNC smb://server/folder. \\server\folderYMMV!


En Automator , cree un nuevo flujo de trabajo de servicio , luego agregue una acción Ejecutar AppleScript mientras reemplaza el código predeterminado de AppleScript con el siguiente código :

on searchReplace(theText, SearchString, ReplaceString)
    set OldDelims to AppleScript's text item delimiters
    set AppleScript's text item delimiters to SearchString
    set newText to text items of theText
    set AppleScript's text item delimiters to ReplaceString
    set newText to newText as text
    set AppleScript's text item delimiters to OldDelims
    return newText
end searchReplace

on run {input, parameters}
    set selectedText to item 1 of input as string
    set convertedText to searchReplace(selectedText, "smb://", "\\\\")
    set convertedText to searchReplace(convertedText, "/", "\\")
    set the clipboard to convertedText as string
    return convertedText
end run

Luego guarde el servicio como: Convertir ruta SMB a ruta UNC

Ahora Convertir ruta SMB a ruta UNC aparecerá en el menú Servicios o en el menú contextual de Servicios cuando se seleccione texto y cuando se utilice el Servicio , la ruta UNC se colocará en el portapapeles . (Por supuesto, esto supone que el texto seleccionado era en realidad una ruta SMB ; de lo contrario, lo que se coloca allí es el texto que se seleccionó cuando se ejecutó el Servicio , que incluirá las sustituciones realizadas).

La ruta SMB de ejemplo smb://server/folderse convertirá en ruta UNC \\server\folder y se colocará en el portapapeles .

Nota: Tenga en cuenta la configuración del Servicio en la imagen a continuación. La casilla de verificación La salida reemplaza el texto seleccionado no está marcada. Puede marcarlo, si eso es lo que desea, sin embargo, si el texto seleccionado no es realmente reemplazable, entonces el Servicio no aparecerá en el menú Servicios o en el menú contextual de Servicios .

Convertir SMB Path a UNC Path Automator Service

¿Qué sucede cuando la ruta SMB contiene espacios o \ espacios con escape?
@klanomath, ¡No había pensado en eso! Supongo que la primera sustitución podría ser set convertedText to searchReplace(selectedText, "\\", "")la que eliminará las barras diagonales inversas y, por lo tanto, supongo que manejará un espacio escapado. ¿Pueden las rutas UNC tener espacios? En caso afirmativo, ¿debería citarse una ruta UNC que tenga espacio?
AFAIK Las rutas UNC que contienen espacios deben citarse en Windows . Escaparlos o un %20 probablemente no funcionará
@klanomath, Entonces, debería agregar el código sugerido de mi primer comentario y luego tener el convertedText, que será la ruta UNC colocada en el Portapapeles y citarlo si tiene espacios o no, ¿estaría bien citarlo? No puedo probar en este momento y por qué estoy pidiendo su opinión. Gracias.
Hmm está bien, pero feo. También recomiendo publicar una advertencia cuando la ruta POSIX contiene <>|?*".
Chicos, ¡vamos a jugar con esto hoy y mañana! ¡¡Gracias!!