使用Powershell进行FTP上载文件的年月日目录结构

时间:2016-04-04 13:03:52

标签: powershell ftp directory

我目前有一个PowerShell脚本,用于定期将某些文件上传到FTP服务器。此脚本将每个文件转储到一个主文件夹中。 我想要的是一个以(根)/年/月/日结构上传文件的脚本。

我已经检查了很多的某些脚本,我可以将它用于此目的,但无法使其中任何一个工作。

有什么建议吗?我一定是在google上尝试了前100个结果。

'将其全部转储到一个文件夹'上传脚本中:

$webclient = New-Object System.Net.WebClient  

$webclient.Credentials = New-Object
System.Net.NetworkCredential($user,$pass)   

foreach($item in ($checkitems)){  

    Write-host  "Uploading $item..."  -ForegroundColor Green 
    $dt = Get-Date 
    Add-Content $log3 "$dt : Uploading $item..." 

    $name=$item.Name
    $name=[System.Uri]::EscapeDataString($name)
    $uri = New-Object System.Uri($ftp+$name+"")
    $webclient.UploadFile($uri, $item.FullName) 

    if($error -ne $null) 
    { 
        Write-Host "Items will not be moved" -ForegroundColor Red 
    } 
    else 
    { 
        Write-Host "Moving $item to processed" -ForegroundColor green 
        Move-Item $item.Fullname $processed 
        $dt = Get-Date 
        Add-Content $log3 "$dt : Moving $item to processed" 
    } 
 }  

我已经检查了一些来源,为了完整起见:

1 个答案:

答案 0 :(得分:0)

这会将文件上传到yy/mm/dd文件夹:

$uri = New-Object System.Uri($ftp + $(Get-Date -f "yyyy/MM/dd") + "/" + $name)

(假设$ftp已经以斜杠结尾)

但该文件夹必须已经存在。

如果文件夹不存在,则必须创建它:
Creating a directory on remote FTP using powershell

您可能需要创建所有级别:

  • $ftp + $(Get-Date -f "yyyy")
  • $ftp + $(Get-Date -f "yyyy/MM")
  • $ftp + $(Get-Date -f "yyyy/MM/dd")

显然,将Get-Date存储到变量并重新使用它是一个好主意。为了保护您免受问题,如果在执行过程中开始新的一天。