Перемещение нескольких типов изображений в новые папки - PullRequest
1 голос
/ 12 апреля 2019

Когда у меня в папке более 500 изображений, программа, которую я использую для их просмотра, резко замедляется.Я нашел скрипт, который может создавать новую папку для каждых 500 и соответственно перемещать один тип изображения.Я хотел бы выяснить, как сделать скрипт поиска для нескольких типов файлов.В основном ищите JPEG и TIFF, сосчитайте их до 500 и переместите этот блок в новую папку.

Я попытался добавить второй поиск для JPEG, но это заставило его сначала пройти через tiff, а затем jpegs.Я также попытался создать переменную с именем $ extensions = ' .jpg', ' .tif', но это ничего не дало.

$filesperfolder = 500
$sourcePath = "C:\Cases\Chiles v Karuna Murray\Documents\C - Barnes-Jewish Hospital"
$destPath = "C:\Cases\Chiles v Karuna Murray\Documents"
$i = 0;
$folderNum = 1;

Get-ChildItem "$sourcePath\*.tiff" | % {

New-Item -Path ($destPath + "\" + $folderNum) -Type Directory -Force
Move-Item $_ ($destPath + "\" + $folderNum);

$i++;

if ($i -eq $filesperfolder){
    $folderNum++;
    $i = 0 ;
}
}

Заранее благодарим за понимание.

1 Ответ

1 голос
/ 12 апреля 2019

Модификация (вашего) скрипта перемещения файлов кусками $filesperfolder

## Q:\Test\2019\04\12\SO_55655155.ps1
$filesperfolder = 500
$sourcePath     = "C:\Cases\Chiles v Karuna Murray\Documents\C - Barnes-Jewish Hospital"
$destPath       = "C:\Cases\Chiles v Karuna Murray\Documents"
$Extensions     = '*.tiff','*.jpg','*.jpeg'
$folderNum = 1

$Files = Get-ChildItem -Path $sourcePath -Include $Extensions -File

for ($i=0;$i -le $Files.Count; $i+=$filesperfolder){
    $Selection = $Files | Select-Object -Skip $i | Select-Object -First $filesperfolder
    $NewFolder = Join-Path $destPath $folderNum
    New-Item -Path $NewFolder -Type Directory -Force
    $Selection | Move-Item -Destination $NewFolder -WhatIf
    $foldernum++
}

Для тестирования я бы выбрал другое $destPath и меньшее $filesperfolder число

Когда вывод выглядит нормально, удалите -WhatIf

Чтобы иметь альтернативное имя папки:

0001-0500
0501-1000
1001-1500
...

Используйте эту строку вместо:

$NewFolder = Join-Path $destPath ("{0:D4}-{1:D4}" -f ($i+1),($i+500))
...