
我在 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
答案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 sessname
sessname
pscp -load ubuntu@local [email protected]:/media/path/to/file.zip "D:\backups
這解決了問題,並且使用該-load sessname
選項對於迄今為止我嘗試傳輸的每個文件和目錄都有效,無論我使用格式user@ipaddress
還是user@hostname
源計算機的格式。
希望這可以幫助嘗試使用 Ubuntu 機器從 Windows HDD 還原檔案的人。