diff --git a/DownloadsFileSync.ps1 b/DownloadsFileSync.ps1 new file mode 100644 index 0000000..0292df6 --- /dev/null +++ b/DownloadsFileSync.ps1 @@ -0,0 +1,41 @@ +$sourcePath = "C:\Users\YourUsername\Downloads" +$destinationPath = "\\YourServer\YourShare" +$fileExtensions = @("exe", "msi", "iso", "img") +$pattern = "[A-Za-z]+" +$timeSpan = New-TimeSpan -Minutes 600 + +while ($true) { + $now = Get-Date + + $files = Get-ChildItem -Path $sourcePath -File | Where-Object { + $_.LastWriteTime -gt $now.Subtract($timeSpan) -and + $fileExtensions -contains $_.Extension.TrimStart('.').ToLower() + } + + foreach ($file in $files) { + $extensionFolder = Join-Path -Path $destinationPath -ChildPath $file.Extension.ToLower() + if(-not (Test-Path -Path $extensionFolder)) + { + New-Item -ItemType Directory -Path $extensionFolder + } + + if ($file.BaseName -match $pattern) + { + $subfolder = [regex]::Match($file.Name, $pattern).Value + $destFolder = Join-Path -Path $extensionFolder -ChildPath $subfolder + + if (-not (Test-Path -Path $destFolder)) + { + New-Item -ItemType Directory -Path $destFolder + } + } + else + { + $destFolder = $extensionFolder + } + + Copy-Item -Path $file.FullName -Destination "$($destFolder)\$($now.ToString("yyyy-MM-dd"))_$($file.Name)" -Force + } + + Start-Sleep -Seconds 600 +} \ No newline at end of file