2011-07-14 92 views
0

我正在嘗試編寫一段使用ProcessBuilder將遠程UNIX計算機上的文件傳輸到本地Windows計算機上的代碼。在一小段研究中,我發現RCP或FTP應該是一個合適的東西。使用RCP或FTP將遠程UNIX計算機上的文件複製到本地Windows計算機上

在對RCP命令做了一些研究之後,我發現了將文件從UNIX複製到Windows機器的說明,但它們似乎不起作用。我被告知使用的命令是:

rcp -r unixhost.user:/example/directory C:\Directory 

但是,使用這告訴我,C:不是主機。我用IP地址,localhost,hosts文件中的windows pc的別名嘗試了它,但沒有一個能夠工作,它要麼拒絕權限,要麼拒絕它連接到主機。看起來ftp似乎是另一個可行的選擇。我不確定是否可以使用ProcessBuilder執行命令以通過FTP成功實現此目的。

rcp或ftp會更適合這項任務嗎?我將如何去使用它們?

編輯:爲了說明,腳本/批處理文件將在Windows機器上運行,並將文件從UNIX機器拖到windows。

+0

好的,我已經整理出了rcp命令。我正在使用一個批處理文件,它使用兩個字符串作爲參數 - 要從UNIX中獲取的文件的文件名以及應該在Windows機器上覆制的目錄。 我現在的問題是,你不能在Windows shell中使用「cd」命令來更改驅動器盤符,也不能使用rcp命令指定盤符(例如,用戶目錄是C:\ Documents \ User,將文件複製到的目錄是D:\ Documents \ File)。是否有可能這樣做,或者我將不得不拆分字符串使用正則表達式來提取驅動器號? – Bonnotbh

回答

1

在目標部分可能會冒出冒號。你有沒有嘗試引用目的地?

rcp -r unixhost.user:/example/directory "C:\Directory" 

這已經有一段時間,因爲我做的任何命令行上的東西的窗口,但我記得反斜槓字符始終是個問題。您可能需要在目標中使用正斜槓,因爲rcp命令正在使用命令行。您可能還可以使用反斜槓作爲轉義字符,所以你可以嘗試以下操作:

rcp -r unixhost.user:/example/directory C\:/Directory 

如果這是行不通的,你可以顯式調用rcp命令之前設置當前驅動器號。如果您使用的是批處理文件,請嘗試以下兩行:

c: 
rcp -r unixhost.user:/example/directory \Directory 
+0

前兩種解決方案不起作用,我想我必須從目錄字符串中分別獲取驅動器號並在rcping之前設置它,如第三個示例中所示。謝謝! – Bonnotbh

相關問題