选择最新文件并通过FTP发送的脚本

时间:2015-11-02 12:41:12

标签: powershell ftp

我希望此脚本从文件夹中选择最新文件,然后通过ftp将其发送到服务器。

我认为它选择的文件较晚,因为运行后FTP上有一个新文件。然而,它不断崩溃

uploading .....
uploading .....
uploading .....
$Dir="C:/log1"    
$ftp = "ftpftpftp" 
$user = "useruseruser" 
$pass = "passpasspass"  
$latest = Get-ChildItem -Path $Dir | Sort-Object LastAccessTime -Descending | Select-Object -First 1
$webclient = New-Object System.Net.WebClient 
$webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass)  
 for($latest){ 
    "Uploading $latest..." 
    $uri = New-Object System.Uri($ftp+$latest.Name) 
    $webclient.UploadFile($uri, $latest.FullName) 
 } 

1 个答案:

答案 0 :(得分:3)

我认为你意外使用了错误的代码块。目前,您已经创建了一个无限循环,因为您没有条件for将如何退出。

这种循环的一个简单例子是

for(){"Hello? Is it me you are looking for?"}

它的结构应该是这样的

for (initialization; condition; repeat){code block}

一个例子是

for($index =1; $index -lt 6;$index++){$index}

只要$Dir不为空,就不需要代码块。如果if($latest){}包含文件(在此代码结构中),则$latest只能用于防止小错误。

if($latest){ 
    "Uploading $latest..." 
    $uri = New-Object System.Uri($ftp+$latest.Name) 
    $webclient.UploadFile($uri, $latest.FullName) 
} 

您的示例输出中没有文件名,所以我怀疑您的$dir不包含任何文件?