Script o flujo de trabajo para modificar buscar y reemplazar las barras invertidas en el portapapeles

0

Necesito hacer muchas copias de las rutas de acceso escritas por personas que usan una PC (que usa barras invertidas) en una Mac (que usa barras diagonales), y estoy cansado de cambiarlas manualmente cada vez. Tengo que copiar la ruta de archivo de nuestro navegador web compartido, pegarla en mi navegador de archivos y luego ir y eliminar manualmente la barra diagonal inversa y reemplazarla con una barra diagonal.

¡La última parte es realmente lo que me está matando ya que básicamente cada ruta de archivo que copio tiene varias barras invertidas que quiero pegar! Lo que quiero es algo que modifique el contenido de mi portapapeles para poder pegarlo en el explorador de archivos de mi Mac sin tener que reemplazar manualmente las barras diagonales cada vez.

En resumen, quiero que cualquier "\" en mi portapapeles cambie a "/" antes de pegarlo. ¿Alguien puede ayudarme con esto?

    
pregunta CFred 03.09.2016 - 19:23

2 respuestas

1

Al utilizar un Servicio de Automator y el código de AppleScript, aquí hay dos ejemplos de cómo puede cambiar barras invertidas a barras inclinadas en una cadena .

El primero toma el texto seleccionado pasado al Servicio de Automatización, realiza los reemplazos y establece la salida en el Portapapeles. Desde allí, puede pegar manualmente donde desee y aceptar texto pegado.

El segundo toma el texto seleccionado pasado al Servicio de Automatización, hace los reemplazos y luego reemplaza el texto seleccionado pasado con el texto modificado en su lugar, es decir, la fuente texto seleccionado es editable.

Hay una leve diferencia de código entre los dos, en la subrutina on run y una única diferencia de configuración entre los servicios de . Ambos requieren primero seleccionar una cadena de texto y luego hacer clic con el botón derecho clic derecho para seleccionar el servicio en el menú contextual o acceder al servicio desde el Nombre de la aplicación > Servicios > menú. La subrutina on replaceText(find, replace, textString) es la misma en ambos ejemplos.

AppleScript código para el método del Portapapeles service:

on run {input}
    set the clipboard to replaceText("\", "/", input as string)
end run

on replaceText(find, replace, textString)
    set prevTIDs to AppleScript's text item delimiters
    set AppleScript's text item delimiters to find
    set textString to text items of textString
    set AppleScript's text item delimiters to replace
    set textString to "" & textString
    set AppleScript's text item delimiters to prevTIDs
    return textString
end replaceText

AppleScript código para reemplazar el método de texto seleccionado service:

on run {input}
    set input to replaceText("\", "/", input as string)
    return input
end run

on replaceText(find, replace, textString)
    set prevTIDs to AppleScript's text item delimiters
    set AppleScript's text item delimiters to find
    set textString to text items of textString
    set AppleScript's text item delimiters to replace
    set textString to "" & textString
    set AppleScript's text item delimiters to prevTIDs
    return textString
end replaceText

Para utilizar el código de AppleScript en un servicio de Automator:

  • En Automator , cree un nuevo Servicio con El servicio recibe el texto seleccionado en cualquier aplicación y La entrada es toda la selección , luego deje sin marcar la casilla de verificación [] La salida reemplaza el texto seleccionado para el servicio de portapapeles (AppleScript código para el método del Portapapeles servicio :) o marcando la casilla de verificación [√] La salida reemplaza el texto seleccionado para el servicio de texto reemplazar seleccionado (AppleScript código para el reemplazo método de texto seleccionado service:)

  • Agregue una Ejecutar AppleScript y elimine el código predeterminado .

  • Copie y pegue cualquier código para el método que elija utilizar.

  • Guarde el Servicio con un nombre apropiado, por ejemplo, Reemplace las barras invertidas con barras en el Portapapeles para la primera y o Reemplace las barras diagonales con barras en texto seleccionado para el segundo. O, por supuesto, lo que prefiera.

Ahora seleccione un texto que contenga barras invertidas y luego seleccione el nombre de servicio en el menú Contexto de servicios (clic derecho) o el Nombre de la aplicación > Servicios > menú.

Si usa el método del Portapapeles, pegue ahora el texto seleccionado modificado donde lo desee o si usa el método de reemplazar el texto seleccionado , ya se reemplazó al haber seleccionado ese Servicio.

    
respondido por el user3439894 03.09.2016 - 22:44
-1
  1. Mantenga las entradas de ruta citadas de Windows en un texto sin formato, asígnele el nombre a paths.txt, como

     "C:\Program Files\xyz"
     "C:\Windows\System32"
    
  2. Entonces hazlo en Terminal:

    cat paths.txt | sed -e 's#\#\/#g' > converted.txt
    
  3. El resultado tal como

    "C:/Program Files/xyz"
    "C:/Windows/System32"
    

    si desea obtener rutas de acceso posix, intente

    cat paths.txt | sed -e 's#^\"\([a-zA-Z]\):#\"\/#' -e 's#\#\/#g' > converted.txt
    

    el resultado convertido será:

    "/C/Program Files/xyz"
    "/C/Windows/System32"
    
respondido por el 南山竹 03.09.2016 - 21:15

Lea otras preguntas en las etiquetas