Pregunta:
Tengo un problema al usar PSCP en un programa C # para copiar un archivo de una máquina Unix a una máquina Windows. El problema solo ocurre cuando la carpeta de destino en la máquina con Windows tiene un espacio. Por ejemplo, lo siguiente funciona bien: (NOTA: la dirección IP y la contraseña se han cambiado para este ejemplo)
pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt C:\download
Pero cuando lo cambio a esto:
pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt C:\download files
Recibo el siguiente error: No se admite más de una fuente remota.
Me doy cuenta de que se debe a que PSCP interpreta el espacio como otro objetivo. ¿Pero cómo puedo hacerlo? He intentado todo tipo de cosas como ponerlo entre comillas y escapar del espacio. He intentado todo lo siguiente y nada funciona:
pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt "C:\download files"
pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt C:\"download files"
pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt C:\download\\ files
¿Algunas ideas?
Respuesta:
Aunque la respuesta adecuada es probablemente usar WinSCP y su biblioteca C #, encontré una manera de hacer que PSCP funcione cuando la carpeta de destino tiene un espacio.
La respuesta correcta es hacer esto:
pscp.exe -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt "C:\download files"
Resulta que estaba teniendo otro problema que me hacía pensar que lo anterior no estaba funcionando. Originalmente estaba usando la ruta completa al ejecutable PSCP.EXE. El camino completo incluía espacios. Entonces estaba tratando de hacer lo siguiente:
"C:\My PSCP Folder\pscp.exe" -pw MyPassword root@127.0.0.1:/etc/myfolder/myfile.opt "C:\download files"
Y estaba tratando de llamar a eso desde C # usando Process.Start () y estaba fallando. Parecía que podría manejarlo si hubiera un espacio en la ruta de PSCP o en la ruta de destino, pero no en ambos. Lo arreglé al incluir la ruta al ejecutable de PSCP en mis variables de entorno de Windows. Ahora puedo simplemente llamar a PSCP.EXE y funciona con las comillas alrededor de la carpeta de destino.