我目前有一个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"
}
}
我已经检查了一些来源,为了完整起见:
答案 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
存储到变量并重新使用它是一个好主意。为了保护您免受问题,如果在执行过程中开始新的一天。