Я надеялся, что кто-то может помочь мне с этим скриптом, который в настоящее время озадачивает меня, я не очень хорошо;) PowerShellКопировать Wav файлы старше 3-х месяцев до архива, создавая год месяц путей
Что Я пытаюсь создать сценарий, который будет сканировать папки и подпапки моего источника, ища файлы * .wav старше 60 дней, а затем переместить их в место назначения архива, создав структуру папок \ year \ month
Это то, что у меня есть
$SourceDir = "d:\test"
$DestinationDir = "e:\test"
$files = get-childitem $SourceDir *.wav
foreach ($file in $files)
{
$Directory = $DestinationDir + "" + $file.CreationTime.Date.ToString('yyyy') + "\" + $file.CreationTime.Date.ToString('MM-MMM')
if (!(Test-Path $Directory))
{
New-Item $directory -type directory
}
where-object {$_.LastWriteTime -lt (get-date).AddDays(-61)} | move-item $file.fullname $Directory
}
Сценарий запускается без ошибок, но не перемещает файлы:/
-
Исходя из комментариев Keiths ниже, мой сценарий выглядит так:
$SourceDir = "d:\test\"
$DestinationDir = "e:\test\"
$date = (get-date).AddDays(-91)
$files = get-childitem -literalpath $SourceDir *.wav
foreach ($file in $files)
{
$Directory = $DestinationDir + "" + $file.CreationTime.Date.ToString('yyyy') + "\" + $file.CreationTime.Date.ToString('MM-MMM')
if (!(Test-Path $Directory))
{
New-Item $directory -type directory
}
if ($file.LastWriteTime -lt $date) {
Write-Host $file
move-item -LiteralPath $file.fullname -Destination $Directory
}
}
И работает отлично! Спасибо Keith
Шаг в правильном направлении! Вы, конечно, правы, я сделал модификацию, и теперь скрипт создает структуру папок, но не удается перенести файлы (у меня есть файлы более 6 месяцев). – user3612344
Попробуйте обновленный ответ (используя -LiteralPath), чтобы сделать уверен, что он работает с именем файла со специальными символами типа '[]'. Если это все еще не работает, поместите это выше Move-Item - 'Write-Host $ file', чтобы убедиться, что' if' test действительно находит старые файлы. Кстати, ваш вопрос говорит 3 месяца, но ваш тест составляет 61 день, что составляет ~ 2 месяца? –
Привет Кит, надеюсь, у вас были хорошие выходные;). На этот раз совет следовал правильно, очень устал в пятницу, и я вижу, что это потому, что тест if не находит файлы. Типичное имя файла: «[Boardroom] _3000-6% 2A% 2A7_20150723135940 (259088) .wav» - обновил приведенный выше сценарий. – user3612344