es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema de ruta al pasar un comando de Autohotkey a PowerShell.

Mypath := "C:\temp\example1.txt"
Run, powershell -command "get-content -path %Mypath% | Set-Clipboard"

Funciona muy bien de arriba, se copia el contenido en el portapapeles con PowerShell, pero cuando hago lo mismo con un archivo que tiene un espacio en su nombre de archivo, falla al ejecutarse en PowerShell.

Al ejecutar lo siguiente:
Mypath := "C:\temp\example 1.txt"
Run, powershell -command "get-content -path %Mypath% | Set-Clipboard"

Obtengo este error en PowerShell:
Get-Content: No se puede encontrar un parámetro posicional que acepte el argumento ‘1.txt’.

También he intentado usar comillas dobles en ambos lados y utilizar el símbolo de escape de Autohotkey, así:
Mypath = ""C:\temp\example 1.txt""
Run, powershell -command "get-content -path %Mypath% | Set-Clipboard"

Así como:
Mypath = ""C:\temp\example 1.txt""
Run, powershell -command "get-content -path %Mypath% | Set-Clipboard"

Pero en ambas ocasiones, PowerShell lanza este error:
Falta el terminador de la cadena: ".

¿Qué estoy haciendo mal? Cualquier ayuda sería apreciada.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema aquí radica en la forma en que se pasa la ruta del archivo de Autohotkey a PowerShell. Cuando la ruta del archivo contiene un espacio, PowerShell lo interpreta como dos argumentos separados en lugar de uno.

    Para solucionar esto, la ruta del archivo debe estar encerrada entre comillas dobles en PowerShell. Una forma de hacer esto en Autohotkey es usar comillas dobles alrededor de todo el comando de PowerShell y escapar cualquier comilla doble dentro del comando con un acento grave (`).

    Aquí tienes un ejemplo:

    Mypath := "C:\temp\example 1.txt"
    Run, powershell -command "&{get-content -path `"%Mypath%`" | Set-Clipboard}"
    

    En este caso, todo el comando de PowerShell está encerrado entre comillas dobles, y la variable de la ruta del archivo está encerrada entre comillas dobles dentro del comando usando acentos graves. Esto permitirá que el comando se ejecute correctamente incluso con archivos que tienen espacios en sus nombres.

Comments are closed.