it-swarm.com.de

Wie verwende ich PSCP, um Dateien von einem Unix-Computer auf einen Windows-Computer zu kopieren, auf dem der Zielpfad Leerzeichen enthält?

Ich habe ein Problem mit PSCP in einem C # -Programm, um eine Datei von einem Unix-Computer auf einen Windows-Computer zu kopieren. Das Problem tritt nur auf, wenn im Zielordner auf dem Windows-Computer ein Leerzeichen vorhanden ist. Beispielsweise funktioniert Folgendes einwandfrei: (HINWEIS: Die IP-Adresse und das Kennwort wurden für dieses Beispiel geändert.)

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

Aber wenn ich es so ändere:

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

Ich erhalte die folgende Fehlermeldung: Mehr als eine Remote-Quelle wird nicht unterstützt.

Mir ist klar, dass dies daran liegt, dass PSCP den Raum als ein anderes Ziel interpretiert. Aber wie kann ich das machen? Ich habe alles Mögliche versucht, wie es in Anführungszeichen zu setzen und dem Raum zu entkommen. Ich habe Folgendes ausprobiert und nichts funktioniert:

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

Irgendwelche Ideen?

11
Corey Burnett

Obwohl die richtige Antwort wahrscheinlich darin besteht, WinSCP und ihre C # -Bibliothek zu verwenden, habe ich eine Möglichkeit gefunden, PSCP zum Laufen zu bringen, wenn der Zielordner einen Speicherplatz enthält.

Die richtige Antwort lautet:

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

Es stellt sich heraus, dass ich ein anderes Problem hatte, das mich denken ließ, dass das oben Genannte nicht funktionierte. Ursprünglich habe ich den vollständigen Pfad zur ausführbaren Datei PSCP.EXE verwendet. Der vollständige Pfad enthielt Leerzeichen. Also habe ich versucht, Folgendes zu tun:

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

Und ich habe versucht, das von C # mit Process.Start () aufzurufen, und es schlug fehl. Es schien, als könnte es damit umgehen, wenn entweder im PSCP-Pfad oder im Zielpfad ein Leerzeichen vorhanden ist, aber nicht in beiden. Ich habe das behoben, indem ich den Pfad zur ausführbaren PSCP-Datei in meine Windows-Umgebungsvariablen aufgenommen habe. Jetzt kann ich einfach PSCP.EXE aufrufen und es funktioniert mit den Anführungszeichen um den Zielordner.

15
Corey Burnett

Verwenden Sie keine pscp.

Der WinSCP-Client (der auf PuTTY aufbaut) bietet eine .NET-Assembly . Hier ist ein Beispiel .

8
grawity

Fügen Sie dem Zielordner einen Punkt hinzu. Folgendes sollte mit dem angehängten . in Ihrem Beispiel funktionieren:

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