143350

Jedes dritte Bild in bestimmten Ordner verschieben

Hallo Liebe Forenmitglieder,

da ich nach erfolgloser Google-Suche auf einen Beitrag hier im Forum gestoßen bin, erhoffe ich mir von Euch
den passenden Rat bzw. eine passende Lösung.

Ich muss in der Arbeit immer wieder mit einem Oszilloskop Messungen durchführen. Das Ergebnis wird als
png Grafik auf einem USB Stick gespeichert.
Meistens sind das 180 Bilder - Nummerierung ist immer von 000 bis 179.
Später müssen die Ergebnisse auf unserem Server gesichert werden.

Kennt Ihr eine Möglichkeit - gerne per Batch oder ein Tool, mit dem ich sagen kann, verschiebe jede dritte
Datei in einen bestimmten Ordner.
Wenn jede dritte verschoben wurde, muss jede zweite wiederum in ein bestimmtes Verzeichnis verschoben werden.
Und wenn diese dann abgelegt sind, muss der Rest wiederum in ein Verzeichnis.

Natürlich kann ich gerne 3 Batch Dateien erzeugen um dies zu realisieren oder auch immer wieder die Zielverzeichnisse
abändern - alles ist einfacher und schneller als derzeit alles immer wieder händisch zu erledigen.

In einzelnen Fällen sind es auch dopplet so viele Messungen als auch doppelt so viele Bilder.

Ich bin gespannt auf Eure Vorschläge, und Danke Euch schon jetzt von Herzen für Eure Zeit die Ihr investiert.

Grüße
BommelMelo
Share on Facebook
Share on X (Twitter)
Share on Reddit
Share on Linkedin

Content-ID: 555489

Url: https://administrator.de/forum/jedes-dritte-bild-in-bestimmten-ordner-verschieben-555489.html

Printed on: May 13, 2025 at 18:05 o'clock

SeaStorm
SeaStorm Mar 06, 2020 at 21:35:07 (UTC)
Goto Top
Hi


sowas z.B? (quick&dirty und nicht wirklich getestet)
$files = Get-ChildItem "C:\temp\test" -Filter *.png | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args.Value.PadLeft(20) }) }  

for( $id = 2; $id -lt $files.count; $id += 3 ) {
    $files[$id] | Move-Item -Destination "C:\temp\test\drittel"  
}


$files = Get-ChildItem "C:\temp\test" -Filter *.png | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args.Value.PadLeft(20) }) }  

for( $id = 1; $id -lt $files.count; $id += 2 ) {
    $files[$id] | Move-Item -Destination "C:\temp\test\halb"  
}

Move-Item -Path "C:\temp\test\*.png" -Destination "C:\temp\test\rest"   
NetzwerkDude
NetzwerkDude Mar 06, 2020 at 22:33:33 (UTC)
Goto Top
Mein Vorschlag kurz vor Mitternacht:

param(
    $Source,
    $Destination,
    $Every = 3
)

$AllFiles = Get-ChildItem -Path $Source -File | Sort-Object

$Index= 0
$FilesToCopy = @()

while ($Index -lt $AllFiles.Length){
    $FilesToCopy += $AllFiles[$Index]
    $Index = $Index + $Every
}

$FilesToCopy | Move-Item -Destination $Destination

Jetzt kannst du das skript als z.B. PickNMove.ps1 anbspeichern und dann so aufrufen:
.\PickNMove.ps1 -Source "<Pfad wo die Originale sind> -Destination "<Pfad wohn die sollen>" -Every <Zahl welche X-te Datei verschoben soll>  

So zurück zu while ! sleep apply milk && check diper

MFG
N-Dude
143127
143127 Mar 07, 2020 updated at 08:50:50 (UTC)
Goto Top
Und wenn dann noch ein Powershell Einzeiler zum Frühstück genehm ist
gci 'd:\ordner' -Filter *.png -file | ?{([int]$_.Basename +1) % 3 -eq 0} | move-item -Destination 'd:\ziel' -verbose  
143350
143350 Mar 07, 2020 at 11:37:29 (UTC)
Goto Top
Hallo SeaStrom, NetzwerkDude und vibrations,

vielen, vielen Dank Euch für Eure Hilfe. Leider kann ich das erst ab kommende
Woche austesten.

Dennoch würde ich von Euch eine kleine Erläuterung benötigen, denn ich bin weder in
Batch programmieren, noch in PowerShell etc. fit.

@SeaStorm: Müsste man Deinen Code als Bacht abspeichern? Und wenn ich gezielte
Ordnernamen angebe, wie z.B. DUT_1, DUT_2 und DUT_3 - an welchen Stellen müsste
ich Deinen Code anpassen?

@NetzwerkDude: Leider weiss ich nicht, wie ich ein Skript abspeicher. Hier würde ich
eine kleine Einweisung dazu Deinerseits benötigen das Skript zu erstellen.
Kannst Du mir noch sagen, was PickNMove ist? Sorry, wenn ich vielleicht etwas dumm
Frage.

@143127: Leider kenne ich mich mit Powershell nicht aus. Aber wenn ich mir Deinen
Code ansehe, benötige ich von Dir auch die Position, die ich ändern muss, wenn jedes
dritte Bild verschoben ist und ich dann jedes zweite verschieben möchte.
Ist das
gci 'd:\ordner' -Filter *.png -file | ?{([int]$_.Basename +1) % 3 -eq 0} | move-item -Destination 'd:\ziel' -verbose
folgende Position:
gci 'd:\ordner' -Filter *.png -file | ?{([int]$_.Basename +1) % 3 -eq 0} | move-item -Destination 'd:\ziel' -verbose

Vielen herzlichen Dank für Eure Vorschläge und Hilfe
Es grüßt Euch herzlich

BommelMelo
SeaStorm
SeaStorm Mar 07, 2020 updated at 18:24:56 (UTC)
Goto Top
Zitat von @143350:
@SeaStorm: Müsste man Deinen Code als Bacht abspeichern?
das ist powershell.
das Script als .ps1 speichern, dann kannst du das ausführen
Und wenn ich gezielte
Ordnernamen angebe, wie z.B. DUT_1, DUT_2 und DUT_3 - an welchen Stellen müsste
ich Deinen Code anpassen?
Äh ... die Pfade sind doch eigentlich ziemlich einfach erkennbar ?!
Etwas "einfacher" und anpassbarer:


$source = "C:\temp\test"  
$target_jedesdritte = "C:\temp\test\drittel"  
$target_jedeszweite = "C:\temp\test\halb"  
$target_rest = "C:\temp\test\rest"  
$files = Get-ChildItem $source -Filter *.png | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args.Value.PadLeft(20) }) }  

for( $id = 2; $id -lt $files.count; $id += 3 ) {
    $files[$id] | Move-Item -Destination $target_jedesdritte
}


$files = Get-ChildItem $source -Filter *.png | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args.Value.PadLeft(20) }) }  

for( $id = 1; $id -lt $files.count; $id += 2 ) {
    $files[$id] | Move-Item -Destination $target_jedeszweite
}

Move-Item -Path "$($source)\*.png" -Destination $target_rest   

Wenn du das jetzt nicht selbst anpassen kannst weiss ich auch nicht ...
143350
143350 Mar 08, 2020 at 21:23:06 (UTC)
Goto Top
Hallo SeaStrom,

danke für Deine Rückmeldung. Bisher hatte ich noch keine Berührungspunkte mit PowerShell.
Da muss ich mich kurz oder auch etwas mehr damit befassen.

Ich werde Dir aber Rückmeldung geben - kann es ja leider frühestens morgen ausprobieren.

Vielen Dank für Deine Hilfe und Lösung.

Herzliche Grüße
Bommel