如何使用 PSCP 將檔案從 Unix 機器複製到目標路徑有空格的 Windows 機器?

如何使用 PSCP 將檔案從 Unix 機器複製到目標路徑有空格的 Windows 機器?

我在 C# 程式中使用 PSCP 將檔案從 Unix 電腦複製到 Windows 電腦時遇到問題。只有當 Windows 電腦上的目標資料夾中有空格時才會出現此問題。例如,以下運作正常:(注意:此範例的 IP 位址和密碼已變更)

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

但是當我把它改成這樣時:

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

我收到以下錯誤:不支援多個遠端來源。

我意識到這是因為 PSCP 將空間解釋為另一個目標。但我該怎麼辦呢?我嘗試過各種方法,例如將其放在引號中並轉義空格。我已經嘗試了以下所有方法,但沒有任何效果:

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

有任何想法嗎?

答案1

雖然正確的答案可能是使用 WinSCP 及其 C# 庫,但我確實找到了一種在目標資料夾中有空格時讓 PSCP 工作的方法。

正確的答案是這樣做:

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

事實證明,我遇到了另一個問題,讓我認為上述方法不起作用。最初我使用的是 PSCP.EXE 可執行檔的完整路徑。完整路徑包含空格。所以我試著做以下事情:

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

我嘗試使用 Process.Start() 從 C# 呼叫它,但失敗了。如果 PSCP 路徑或目標路徑中有空格(但不能同時存在),它似乎可以處理它。我透過在 Windows 環境變數中包含 PSCP 可執行檔的路徑來解決這個問題。現在我可以呼叫 PSCP.EXE,它可以與目標資料夾周圍的引號配合使用。

答案2

不要使用pscp.

WinSCP客戶端(建置在 PuTTY 之上)提供了.NET 程式集。這是一個例子

答案3

將句點附加到目標資料夾。以下內容應與附加的內容一起使用以你的例子為例:

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

答案4

我遇到了同樣的問題,我將pscp.exe目錄加入為會話的 PATH 變數cmd.exe

set PATH="C:\Program Files\PuTTY;%PATH"

我有一台舊的 Windows 上網本,我把它拆成了零件。我將 HDD 連接到我的 Ubuntu 桌面,因為我目前唯一的 Windows 機器是筆記型電腦,我不想購買 SATA 轉 USB 轉接器。我正確安裝了 HDD 並且可以導航文件,但是當嘗試使用以下命令從 Ubuntu 傳輸到 Windows 10 時:

pscp [email protected]:/media/path/to/file.zip "D:\backups

我收到多個錯誤,包括不支援本地到本地複製,主機不存在, ETC。

透過使用名為「其中是已儲存會話的名稱」[OPTION]提供的功能,我能夠毫無問題地傳輸檔案。完整命令如下:pscp-load sessnamesessname

pscp -load ubuntu@local [email protected]:/media/path/to/file.zip "D:\backups

這解決了問題,並且使用該-load sessname選項對於迄今為止我嘗試傳輸的每個文件和目錄都有效,無論我使用格式user@ipaddress還是user@hostname源計算機的格式。

希望這可以幫助嘗試使用 Ubuntu 機器從 Windows HDD 還原檔案的人。

相關內容