Я ИТ-администратор, но не знаю PowerShell. Я создал скрипт, погуглив в Интернете и поигравшись с ним, но мне нужно немного больше функциональности.
Вот немного справочной информации: Каждый день мы сканируем кучу документов в папку «Сканирования». Внутри папки «Сканы» также есть папка «Архив».
Вот чего я пытаюсь добиться с помощью скрипта:
Я бы хотел, чтобы сценарий запускался каждую ночь. Если в папке «Сканирования» есть какие-либо файлы (не папки),
Если в конкретный день файлов нет, то скрипт ничего не делает.
Я надеюсь, что это имеет смысл.
$datecurrent = get-date -Format MM-dd-yyyy
New-Item -ItemType directory -Path "C:\Users\Admin\Desktop\Scans\$datecurrent"
$DestinationFolder = "C:\Users\Admin\Desktop\Scans$datecurrent"
$archiveFolder = "C:\Users\Admin\Desktop\Scans\Archive"
$EarliestModifiedTime = get-date (get-date -format d)
$Files = Get-ChildItem "C:\Users\Admin\Desktop\Scans*.*"
foreach ($File in $Files) {
if ($File.LastWriteTime -gt $EarliestModifiedTime) {
Move-Item $File -Destination $DestinationFolder
Write-Host "Copying $File"
} else {
Write-Host "Not copying $File"
}
}
Move-Item $DestinationFolder -Destination $ArchiveFolder
Для начала уменьшите шаги. Если файлы есть, создайте новую папку прямо в архивах и переместите файлы прямо в эту папку. Это уменьшает код примерно вдвое. Кроме того, я разбил это единственное, очень длинное предложение на читабельные и отформатировал шаги, которые вы хотите предпринять для удобства чтения. Возможно, вы захотите просмотреть то, что я сделал, чтобы вы могли использовать эту концепцию в будущих публикациях. Если ваш вопрос будет легко читать и понимать, вы сможете быстрее получить ответы. :-)
Эй, Кен, большое спасибо за твою помощь!
Это должно быть все, что вам нужно:
$Root = 'C:\Users\Admin\Desktop\Scans'
$ArchiveRoot = 'C:\Users\Admin\Desktop\Scans\Archive'
$CurrentFileList = Get-ChildItem -Path $Root -File
if ($CurrentFileList) {
$DestinationFolder = Join-Path -Path $ArchiveRoot -ChildPath $(Get-Date -Format 'yyyy-MM-dd')
New-Item -Path $DestinationFolder -ItemType Directory | Out-Null
Move-Item -Path $CurrentFileList.FullName -Destination $DestinationFolder -Force
}
Привет, Олаф, большое спасибо за помощь, работает просто великолепно.
Пожалуйста. Я рад слышать, что это помогло.
К вашему сообщению было применено правильное форматирование постфактум, но, пожалуйста, форматируйте свои сообщения правильно самостоятельно для начала в будущем.