Como usar o PSCP para copiar o arquivo da máquina Unix para a máquina Windows onde o caminho de destino possui espaços?

11

Estou com um problema usando o PSCP em um programa C # para copiar um arquivo de uma máquina Unix para uma máquina Windows. O problema só acontece quando a pasta de destino na máquina Windows tem um espaço nela. Por exemplo, o seguinte funciona bem: (OBSERVAÇÃO: o endereço IP e a senha foram alterados para este exemplo)

pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt C:\download

Mas quando eu mudo para isso:

pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt C:\download files

Eu recebo o seguinte erro: Mais de uma fonte remota não suportada.

Eu percebo que é porque o PSCP interpreta o espaço como outro alvo. Mas como posso fazer isso? Eu tentei todos os tipos de coisas como colocar entre aspas e escapar do espaço. Eu tentei todos os itens a seguir e nada funciona:

pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt "C:\download files"
pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt C:\"download files"
pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt C:\download\ files

Alguma idéia?

    
por Corey Burnett 12.01.2013 / 02:14

3 respostas

13

Embora a resposta correta seja provavelmente usar o WinSCP e sua biblioteca C #, descobri uma maneira de fazer o PSCP funcionar quando a pasta de destino tem um espaço.

A resposta correta é fazer isso:

pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt "C:\download files"

Acontece que eu estava tendo outro problema que estava me fazendo pensar que o acima não estava funcionando. Originalmente eu estava usando o caminho completo para o executável PSCP.EXE. O caminho completo incluiu espaços. Então eu estava tentando fazer o seguinte:

"C:\My PSCP Folder\pscp.exe" -pw MyPassword [email protected]:/etc/myfolder/myfile.opt "C:\download files"

E eu estava tentando chamar isso de C # usando Process.Start () e estava falhando. Parecia que poderia lidar com isso se houvesse um espaço no caminho do PSCP ou no caminho de destino, mas não em ambos. Eu consertei isso incluindo o caminho para o executável do PSCP em minhas variáveis de ambiente do Windows. Agora posso apenas chamar o PSCP.EXE e ele funciona com as aspas ao redor da pasta de destino.

    
por 12.01.2013 / 18:44
8

Não use pscp .

O cliente WinSCP (que é construído sobre o PuTTY) fornece um .NET assembly . Veja um exemplo .

    
por 12.01.2013 / 02:16
0

Anexe um período à pasta de destino. O seguinte deve funcionar com o acrescentado. no seu exemplo:

"C:\My PSCP Folder\pscp.exe" -pw MyPassword [email protected]:/etc/myfolder/myfile.opt "C:\download files\."
    
por 18.03.2016 / 13:45

Tags