nachgefragt
Goto Top

Powershell: Dateinamen mit fortlaufender Nummer umbennen bzw. ergänzen und in neuen Pfad verschieben

Guten Morgen Powershell-Administratoren.
Guten Morgen Batch-Administratoren.

Folgende Anforderung ist aufgetaucht:

Ein Programm legt in einem Ordner PDF Dateien ab, keine festen Zeiten, "so wie es halt kommt".
Die Datei muss umbenannt werden, z.B. von DATA.pdf in DATA_1000.pdf.
DATA_1000.pdf muss dann in einen anderen Ordner verschoben werden.

  • Die 1000 steht hier für eine fortlaufende Nummer.
  • Es darf nie die gleiche fortlaufende Nummer verwendet werden.
  • Der PC Neustart mit dem Script muss jederzeit neu gestartet werden dürfen.
  • Das Script muss durchlaufen, optimal per Monitoring kontrolliert.
  • Der Vorgang darf nicht kollidieren, z.B. große PDF Datei kommt rein, Script versucht schon während des Eingangs eine Verarbeitung.

Gibt es hierfür eine zuverlässiges Script/Batch?
Oder ggf. sogar ein Programm welches die zuverlässig erledigt?

Vielen Dank und einen leckeren Kaffee face-smile!

Content-ID: 619365

Url: https://administrator.de/forum/powershell-dateinamen-mit-fortlaufender-nummer-umbennen-bzw-ergaenzen-und-in-neuen-pfad-verschieben-619365.html

Ausgedruckt am: 31.03.2025 um 10:03 Uhr

146189
146189 05.11.2020 aktualisiert um 07:47:32 Uhr
Goto Top
$quelle = 'd:\quelle'  
$ziel = 'd:\ziel'  
$num = ls $ziel -file | ?{$_.Basename -match '\d+$'} | %{[int]$matches} | sort -Desc | select -f 1  
ls $quelle -file | %{$num++;mv $_.Fullname -Destination "$ziel\$($_.Basename)_$num$($_.Extension)" -verbose}  
https://tio.run/##dY/JTgMxEETv/opWcJREo1lygEuEkBDwEyEamZkOsfAS2T0Baci3D1 ...
nachgefragt
nachgefragt 05.11.2020 um 15:05:35 Uhr
Goto Top
Danke,
hat genau 1x funktioniert. Ich hab die Anforderung nochmal nachgebessert.
Kann man die fortlaufende Nummer variable nach Startpunkt eingeben?
146189
Lösung 146189 06.11.2020 aktualisiert um 10:35:43 Uhr
Goto Top
Zitat von @nachgefragt:
hat genau 1x funktioniert. Ich hab die Anforderung nochmal nachgebessert.
Joa, wenn man die Anforderungen nicht passend schreibt kann es nie zum gewünschten Ergebnis kommen.
Kann man die fortlaufende Nummer variable nach Startpunkt eingeben?
Klar,
Ich hab die Anforderung nochmal nachgebessert.
Wunschkonzert ...
$quelle = 'D:\quelle'  
$ziel = 'D:\ziel'  
$filter = '*.pdf'  
$numlog = "$PSScriptRoot\num.log"  
if (Test-Path $numlog){
    $num = [int](gc $numlog -TotalCount 1)
}else{
    $num = 1000
}
write-host "Waiting for files with Extension $filter in folder '$quelle' ..."  
while($true){
    ls $quelle -file -filter $filter | %{
        $num++
        $dFile = "$ziel\$($_.Basename)_$num$($_.Extension)"  
        while(Test-Path $dFile){
            $num++
            $dFile = "$ziel\$($_.Basename)_$num$($_.Extension)"  
        }
        $fs = $null
        try{
            $fs = (New-Object System.IO.FileInfo $_.FullName).OpenWrite()
            $fs.Close(); $fs.Dispose()
            mv $_.Fullname -Destination $dFile  -verbose
            $num | sc $numlog
        }catch{}finally{
            if($fs){
                $fs.Close(); $fs.Dispose()
            }
        }
    }
    sleep 10
}
nachgefragt
nachgefragt 10.11.2020 um 09:22:51 Uhr
Goto Top
Zitat von @146189:
Wunschkonzert ...
Besten Dank,
funktioniert einwandfrei face-smile-
LG