#powershell
#powershell
Вопрос:
Я пытаюсь переместить все файлы старше шести месяцев в архивный файл, который у меня есть
#set root folder
$baseFolder = "C:UsersCalebDesktop"
$archiveBase = "C:UsersCalebDesktop"
$limit_to=(Get-date (Get-date -Format d)).AddDays(-180)
#get files inside root
$folder = Get-ChildItem $baseFolder -File
#for each folder
foreach($file in Where-$folder.CreationTime -lt $limit_to ) {
#build the move destination path
$a=$file.CreationTime.Date.Year
$archive="Archive"
$name=$a " " $archive
$destination = Join-Path $archiveBase $name
#Create Directory And Deposite Files
if(Test-Path $destination)
{
mv $file $destination
}
else
{
mkdir $destination
mv $file $destination
}
}
Кажется, я не могу получить только файлы старше 180 дней.
Я новичок, поэтому я открыт для любых изменений эффективности, которые я мог бы внести
Комментарии:
1. Вы можете получить доступ к году создания файла через
((Get-ChildItem).CreationTime).Year
. Просто включите это соответствующим образом в путь назначенияcopy-item
.2. хорошо, извините за тот последний беспорядок, который не имел никакого смысла, я думаю, вы могли бы решить мою проблему сейчас @davidhigh
3. посмотрим, поможет ли это blog.kandiaro.net/2016/08/uncategorised /…
Ответ №1:
попробуйте это
$baseFolder = "C:UsersCalebDesktop"
$archiveBase = "C:UsersCalebDesktop"
$limit_to=(Get-date (Get-date -Format d)).AddMonths(-6)
mkdir $archiveBase -force
Get-ChildItem $baseFolder -File | where CreationTime -lt $limit_to | foreach {move-item $_.FullName -Destination ($archiveBase $_.CreationTime.Year " Archive" $_.Name) -Force }