2014-04-03 376 views
0

我想通過使用wscript的pscp傳輸一個文件,此代碼不起作用。 它不會拋出任何錯誤,但它不會傳輸文件或輸出。pscp文件傳輸錯誤輸出重定向到文件

Dim objShell 
Set objShell = WScript.CreateObject("WScript.Shell") 
objShell.Exec "C:\scripts\putty\pscp.exe -pw password C:\file_to_transfer.txt [email protected]:/directory 2>> C:\Log_file.txt" 

感謝幫助....

回答

0

你需要一個殼特徵外殼(例如重定向)。所以在你的命令前加上「%comspec%/ c」。

您是否知道.Exec允許讀取被調用進程的StdOut/StdErr?

證據:

>> f = "c:\temp\pscp.log" 
>> c = "pscp -pw pword -ls [email protected]:/home" 
>> set s = CreateObject("WScript.Shell") 
>> WScript.Echo s.Run(c & " > " & f, 0, True) 
>> WScript.Echo s.Run("%comspec% /c " & c & " > " & f, 0, True) 
>> WScript.Echo goFS.OpenTextFile(f).ReadAll() 
>> WScript.Echo s.Exec(c).Stdout.ReadAll() 
>> 
1 <-- no shell/%comspec%, no luck 
0 <-- it did not fail 
Listing directory /home <-- .Run did work with shell 
drwxr-xr-x 5 root  root   4096 Feb 22 2011 . 
... 

Listing directory /home <-- .Exec().Stdout.ReadAll() works 
drwxr-xr-x 5 root  root   4096 Feb 22 2011 . 
... 
+0

感謝,但它並沒有爲我工作。在第6行上拋出錯誤char 1 - 所需的goFS對象。 – user3493540

+0

@ user3493540 - 它是*證據*不是'準備好複製和粘貼代碼'。請問自己什麼對象有一個.OpenTextFile方法。你試過'%comspec%/ c'加法嗎? –

+0

這是我在腳本編寫中的第一個任務,所以我完全不知道我在做什麼。我會很高興,如果我可以通過pscp傳輸該文件開始... – user3493540