我有這個腳本可以下載所有.txt和.log文件。但是我需要在下載後將它們移動到服務器上的另一個目錄中。使用WinSCP .NET程序集下載後移動(不復制)遠程文件
到目前爲止,我打的時候老是喜歡錯誤,「不能動‘文件’到‘/文件’。
try
{
# Load WinSCP .NET assembly
Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.Protocol = [WinSCP.Protocol]::ftp
$sessionOptions.HostName = "host"
$sessionOptions.PortNumber = "port"
$sessionOptions.UserName = "user"
$sessionOptions.Password = "pass"
$session = New-Object WinSCP.Session
try
{
# Connect
$session.DisableVersionCheck = "true"
$session.Open($sessionOptions)
$localPath = "C:\users\user\desktop\file"
$remotePath = "/"
$fileName = "*.txt"
$fileNamee = "*.log"
$remotePath2 = "/completed"
$directoryInfo = $session.ListDirectory($remotePath)
$directoryInfo = $session.ListDirectory($remotePath2)
# Download the file
$session.GetFiles(($remotePath + $fileName), $localPath).Check()
$session.GetFiles(($remotePath + $fileNamee), $localPath).Check()
$session.MoveFile(($remotePath + $fileName, $remotePath2)).Check()
$session.MoveFile(($remotePath + $fileNamee, $remotePath2)).Check()
}
finally
{
# Disconnect, clean up
$session.Dispose()
}
exit 0
}
catch [Exception]
{
Write-Host $_.Exception.Message
exit 1
}
我試過這個,它工作的很好,如果我離開「$ remotePath」,只有$ transferResult = $ session.GetFiles($ fileName,$ localPath),但自然它只是將文件複製到「已完成」文件夾而不是隻是移動它們,但每當我嘗試添加「$ remotePath + $ fileName」它什麼都不做,甚至沒有下載任何建議? – 2015-02-10 19:25:01
ok,correc灰。我修正了一些我做錯了的事情,所以它下載並移動「.txt」和「.log」文件夾內的文件,我怎樣才能將整個文件夾移動到「已完成」文件夾?因爲每天總會有新的東西,所以我想保持清潔並移動整個文件夾而不僅僅是其內容。 – 2015-02-10 19:34:53
「文件夾」實際上是一種文件,所以只需在文件夾上調用'MoveFile',就像'$ session.MoveFile(「/ path/folder_to_move」,「/ another_path/folder_to_move_to /」)' – 2015-02-11 07:21:44