Tips: Utvelgelse av bilder

Windows OS tips om dere trenger å plukke ut hvert n’te bilde fra en mappe og kopiere/flytte dette til en undermappe.

LR inneholder ikke de store mulightene for dette og har man +1000 bilder i en TimeLapse og vil bruke hvert 2., 3., 4. bilde som frame i en timelapse så kan det være en fordel å flytte/kopiere disse til en egen mappe. Dette kan man enkelt gjøre via et Powershell script som startes som Administrator der man slår av restriksjoner på ExecutionPolicy:

Slå av Execution policy
PS C:\Skript>set-executionpolicy unrestricted og svar med Y.

Kjøre script med argumenter
PS C:\Skript>.\Flytt-Kopier-Filer.ps1 -home «full sti til filene» -To «mappe under From der filene skal plasseres» -Seq 1, 2, 4, 4 osv -Move $true ($true ved flytting, ved kopiering kan -Move utelates) -Try $False (uten -Try så vil ikke noe skje, bare liste på skjermen hva scriptet vill utføre) -Ext jpg eller filtypen du vil sjekke mot. Scriptet tar ikke med seg XMP filene om de skulle finnes. Da må scriptet kjøres en gang til med -Ext xmp som filtype.

Eksempeler om 1000 JPG filer ligger under C:\Bilder\TimeLapse\Knuten og man ønsker å ha kun hvert 4. bilde som frame i en TimeLapse:

Kopiere og bare liste på skjerm
PS C:\Skript>.\Flytt-Kopier-Filer.ps1 -home «C:\Bilder\TimeLapse\Knuten» -To TLapse4 -Seq 4 -Ext JPG
Kopiere og utføre
PS C:\Skript>.\Flytt-Kopier-Filer.ps1 -home «C:\Bilder\TimeLapse\Knuten» -To TLapse4 -Seq 4 -Ext JPG -Try $False
Flytte og bare liste på skjerm
PS C:\Skript>.\Flytt-Kopier-Filer.ps1 -home «C:\Bilder\TimeLapse\Knuten» -To TLapse4 -Seq 4 -Ext JPG -Move $True
Flytte og utføre
PS C:\Skript>.\Flytt-Kopier-Filer.ps1 -home «C:\Bilder\TimeLapse\Knuten» -To TLapse4 -Seq 4 -Ext JPG -Move $True -Try $False

Importer mappen du har kopiert/flyttet til med Add using current location i LR.

Lagre dette som c:\skript\flytt-kopier-filer.ps1 eller noe tilsvarende og kjør dette i et PS vindu.
#Script start
#Odd Eirik Skjolde, 2017
param(
[string]$From = $(throw «-From er påkrevet og mappen du skal flytte fra «) ,
[string]$To = $(throw «-To er påkrevet og destinasjons mappen som opprettes under -From»),
[string]$Ext = $(throw «-Ext er påkrevet må inneholde filtypen du skal sjekke for»),
[int]$Seq = $(throw «-Seq er påkrevet og bestemmer utvelgelsen av filer. 1 er alle filer, 2 hverannen, osv»),
[bool]$Move = $False, #Normalt vil filene kopieres, sett -Move til $True og de flyttes
[bool]$Try = $True #Normalt vil filene listes ut uten at noe kopieres/flyttes. Med -Try til $False så vil det bli flyttet/kopiert
)
$arrFList = @()
if (!(test-path $($From+»\»+$To))) {new-item -path $($From+»\»+$To) -itemtype Directory | out-null}
$arrFList = gci $from | ?{! $_.PsiContainer -and $_.Extension -match $Ext} | select -exp fullname
if ($Try) {$Exec = «List:»} else {$Exec = «Utført:»}
for ($i = 0; $i -le $arrFlist.Count – 1; $i += $Seq) {
if ($Move) {
Write-host «$Exec Flytt $($arrFList[$i]) til $($From+»\»+$To)»
if (!($Try)) {move-item $($arrFList[$i]) $($From+»\»+$To) | out-null}
} else {
write-host «$Exec Kopier $($arrFList[$i]) til $($From+»\»+$To)»
if (!($Try)) {copy-item $($arrFList[$i]) $($From+»\»+$To) | out-null}
}
}
#Script Slutt

Når du er ferdig så sett executionpolicy tilbake til restriced. Ellers kan du være noe mer utsatt for angrep som benytter PS script.
PS C:\Skript>set-executionpolicy restricted og svar med Y.