首页 文章

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

提问于
浏览
1

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

我已经检查了 a lot 的某些脚本我可以用于此目的,但无法使其中任何一个工作 .

有什么建议?我一定是在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

    这会将文件上传到 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 存储到变量并重用它是一个好主意 . 为了保护您免受问题,如果在执行过程中开始新的一天 .

相关问题