akoch85
Goto Top

Dateiname mit Powershell erweitern

Hallo,
ich benötige ein Script mit dem ich meine Bilder die sich in einem Ordner befinden umbenenne bzw. erweitern kann. Die Dateien lauten im Ursprung alle so:

100841
100841_02
100841_03
100841_04

100858
100858_02
100858_03
100858_04

usw.

Am Ende sollen Dateien wie folgt aussehen:

4042804100841
4042804100841.PT01
4042804100841.PT02
4042804100841.PT03

4042804100858
4042804100858.PT01
4042804100858.PT02
4042804100858.PT03

Der Dateiname soll überall um die 7-stellige Nummer (4042804) erweitert werden und zwar vor der tatsächlichen Nummer und die "_02" "_03" "_04" sollen durch ".PT01" ".P102" ".PT03" ersetzt werden.

Kann mir da jemand weiter helfen ?

Ich wäre sehr Dankbar für jegliche Hilfe

Content-Key: 284146

Url: https://administrator.de/contentid/284146

Ausgedruckt am: 29.03.2024 um 10:03 Uhr

Mitglied: 114757
114757 29.09.2015, aktualisiert am 30.09.2015 um 08:40:45 Uhr
Goto Top
Moin,
$folder = 'D:\bilder'  
$nummer = '1234567'  
gci $folder | ?{!$_.PSIsContainer} | %{
    if ($_.Name.Contains('_')){  
        $newname = "$nummer$($_.Basename.Split('_')).PT$($_.Basename.split('_')[1])$($_.Extension)"  
    }else{
        $newname = "$nummer$($_.Name)"  
    }
    rename-item $_.FullName -NewName $newname
}
Gruß jodel32
Mitglied: akoch85
akoch85 30.09.2015 um 08:15:30 Uhr
Goto Top
Moin jodel32,
vielen Dank für die schnelle Antwort. Es funktioniert zwar aber ich habe ein kleines Problem:
Bei den Namen :
100841_02
100841_03
100841_04

macht er folgendes draus:
1234567100841_02.jpg.PT02
1234567100841_02.jpg.PT03
1234567100841_02.jpg.PT04

ich möchte diesen Teil"_02" "_03" "_04" komplett weg haben sodass der Name dann so aussieht:

1234567100841.PT02
1234567100841.PT03
1234567100841.PT04


Vielen Dank.

Gruß akoch
Mitglied: 114757
114757 30.09.2015 aktualisiert um 08:24:24 Uhr
Goto Top
ist oben angepasst, leider wirfst du hier die Namen etwas durcheinander und sagst nicht was mit der "Dateierweiterung" geschehen soll und ob das PTXX die neue Dateierweiterung sein soll face-sad
Mitglied: akoch85
akoch85 30.09.2015 um 08:34:03 Uhr
Goto Top
Die Dateierweiterung soll wie gehabt .jpg bleiben, nur der Name soll geändert werden also aus

100841.jpg -> 1234567100841.jpg
und aus

100841_02.jpg -> 1234567100841.PT02.jpg

ich hoffe es ist jetzt deutlicher face-smile

Im moment macht er folgendes

aus

100841.jpg -> 1234567100841.jpg (das ist richtig wie ich es auch möchte )


aber bei den anderen macht er es falsch:


1234567100841_02.jpg.PT04 ( der teil "_02" soll komplett weg) -> folgendes möchte ich haben 1234567100841.PT04.jpg


Gruß Andreas
Mitglied: 114757
114757 30.09.2015 aktualisiert um 08:39:06 Uhr
Goto Top
Zitat von @akoch85:

Die Dateierweiterung soll wie gehabt .jpg bleiben, nur der Name soll geändert werden also aus
Wenn ich das weiß ist das kein Problem face-smile s. Anpassung o.
Mitglied: akoch85
akoch85 30.09.2015 um 08:42:38 Uhr
Goto Top
Der Name beinhaltet aber immer noch die "_02" "_03" "_04" wie kriegt man diese auch noch weg ? face-smile

Danke Dir face-smile
Mitglied: TlBERlUS
Lösung TlBERlUS 30.09.2015 aktualisiert um 10:22:58 Uhr
Goto Top
Guten Morgen,

im Zweifel so:

$arr=gci C:\test | select -ExpandProperty name
foreach ($a in $arr){
$c = $a -replace "_0[0-9]",""  
Rename-Item c:\test\$a -NewName $c
}
Mitglied: 114757
114757 30.09.2015 aktualisiert um 09:01:08 Uhr
Goto Top
Du hast den Code zu früh kopiert hatte das abgeändert ... sorry lahmes Smartphone face-smile
Mitglied: 114757
Lösung 114757 30.09.2015 aktualisiert um 10:22:57 Uhr
Goto Top
Zitat von @TlBERlUS:

Guten Morgen,

im Zweifel so:

> $arr=gci C:\test | select -ExpandProperty name
> foreach ($a in $arr){
> $c = $a -replace "_0[0-9]",""  
> Rename-Item c:\test\$a -NewName $c
> }
> 
Das beinhaltet ja die ganzen wünsche des TO nicht ..., und es berücksichtigt nur Zahlen bis 09 face-wink
Mitglied: akoch85
akoch85 30.09.2015 um 09:00:38 Uhr
Goto Top
Super das funktioniert.

Vielen dank für eure Hilfe face-smile

Gruß akoch
Mitglied: akoch85
akoch85 30.09.2015 um 09:02:25 Uhr
Goto Top
Man kann die ja verbinden face-smile
Mitglied: 114757
Lösung 114757 30.09.2015 aktualisiert um 10:22:55 Uhr
Goto Top
Bitte den Beitrag dann noch als gelöst markieren. Danke.
Mitglied: TlBERlUS
Lösung TlBERlUS 30.09.2015 aktualisiert um 10:22:54 Uhr
Goto Top
Zitat von @114757:
Das beinhaltet ja die ganzen wünsche des TO nicht ...,und es berücksichtigt nur Zahlen bis 09 face-wink
War ja auch mehr als Erweiterung gedacht und er hat ja auch nur Zahlen von 01-04 angegeben face-smile
Mitglied: colinardo
Lösung colinardo 30.09.2015 aktualisiert um 10:22:48 Uhr
Goto Top
Hallo zusammen,
wenn ich noch eine etwas elegantere Version zusteuern darf face-smile
$folder = 'D:\bilder'  
$nummer = '1234567'  
gci $folder | ?{!$_.PSIsContainer} | rename-item -NewName {"$nummer$($_.Basename -replace '_(\d+)$','.PT$1')$($_.Extension)"}  

Grüße Uwe
Mitglied: akoch85
akoch85 30.09.2015 um 10:12:08 Uhr
Goto Top
Lieben Dank Uwe !
Mitglied: akoch85
akoch85 30.09.2015 um 10:22:23 Uhr
Goto Top
Das funktioniert ja super! Vielen Dank nochmal.

Wäre es möglich das für die Bilder mit der selben Stammnummer automatisch ein Unterordner angelegt wird und diese dort abgespeichert werden?

Bsp:

Ordnername " 100841"
Ordnerinhalt:
1234567100841
1234567100841.PT02
1234567100841.PT03
1234567100841.PT04

Gruß Andreas
Mitglied: colinardo
colinardo 30.09.2015 aktualisiert um 10:24:35 Uhr
Goto Top
Dorthin kopieren oder verschieben ?
Mitglied: akoch85
akoch85 30.09.2015 um 10:29:06 Uhr
Goto Top
am besten kopieren
Mitglied: colinardo
Lösung colinardo 30.09.2015 aktualisiert um 10:34:16 Uhr
Goto Top
Zitat von @akoch85:
am besten kopieren
$folder = 'D:\bilder'  
$nummer = '1234567'  
gci $folder | ?{!$_.PSIsContainer} | %{
    $dest = $_.DirectoryName + "\" + $_.BaseName.Split('_')  
    if (!(Test-Path $dest)){md $dest}
    copy-item -Path $_.FullName -Destination "$dest\$nummer$($_.Basename -replace '_(\d+)$','.PT$1')$($_.Extension)"  
}
Mitglied: akoch85
akoch85 30.09.2015 um 10:34:23 Uhr
Goto Top
Ich danke Dir vielmals Uwe!!! habe mindestens 1 Woche Zeit gespart !!! Vielen Dank nochmal !!!
Mitglied: colinardo
colinardo 30.09.2015 aktualisiert um 10:48:00 Uhr
Goto Top
Keine Ursache, freut mich wenn ich helfen konnte face-smile
Mitglied: TlBERlUS
TlBERlUS 30.09.2015 um 11:11:51 Uhr
Goto Top
Zitat von @akoch85:

Ich danke Dir vielmals Uwe!!! habe mindestens 1 Woche Zeit gespart !!! Vielen Dank nochmal !!!

1 Woche? Solltest dort 20k Dateien per Hand umbenennen und sortieren??
Mitglied: akoch85
akoch85 30.09.2015 um 11:17:32 Uhr
Goto Top
So in der Art, hab grad nach dem Studium in einem Unternehmen angefangen. Möchte hier etwas Ordnung rein bringen :D
Mitglied: TlBERlUS
TlBERlUS 30.09.2015 um 11:29:17 Uhr
Goto Top
Zitat von @akoch85:

So in der Art, hab grad nach dem Studium in einem Unternehmen angefangen. Möchte hier etwas Ordnung rein bringen :D

Ohne dir nahe treten zu wollen, aber laut deinem Profil bist du Entwickler. Solltest du ein solches Skript nicht erstellen können?
Mitglied: akoch85
akoch85 30.09.2015 um 11:31:29 Uhr
Goto Top
Nicht in Powershell ;)
Mitglied: akoch85
akoch85 05.10.2015 um 11:23:04 Uhr
Goto Top
Hallo Uwe,
ich habe ein weiteres Problem:
Ich habe diese Bilder:

4042804100858.jpg
4042804100858.PT01.jpg
4042804100858.PT02.jpg
4042804100858.PT03.jpg
4042804100858.PT04.jpg
4042804100858.PT05.jpg

das funktioniert soweit:

jetzt möchte ich diese Bilder 5 Mal kopieren mit jeweils eindeutigen Nummer und in verschiedenen Ordnern abspeichern. Es wird jetzt nur die innere Nummer geändert: d.h.

4042804"NUMMER".jpg
4042804"NUMMER".PT01.jpg
4042804"NUMMER".PT02.jpg
4042804"NUMMER".PT03.jpg
4042804"NUMMER".PT04.jpg
4042804"NUMMER".PT05.jpg

Die Ordner sollen nach der "NUMMER" benannt werden.

Kannst du mir da weiter helfen ?

Vielen Dank im Voraus

Gruß Andreas
Mitglied: colinardo
Lösung colinardo 05.10.2015 aktualisiert um 16:28:33 Uhr
Goto Top
Hi,
ist zwar mal wieder nicht ganz eindeutig, aber hier meine Interpretation deiner Schilderung.
$folder = 'C:\temp\bilder'  
$destfolder = 'C:\temp\ziel'  
$numbers = @('11111','22222','33333','44444','55555')  
gci $folder | ?{!$_.PSIsContainer} | %{
    $file = $_
    $numbers | %{
        $dest = "$destfolder\$_"  
        if (!(Test-Path $dest)){md $dest}
        copy-item -Path $file.FullName -Destination "$dest\$($file.Basename -replace '^(\d{7})(\d+)(.*)',('$1' + $_ + '$3' ))$($file.Extension)"      
    }
}
Grüße Uwe
Mitglied: akoch85
akoch85 05.10.2015 um 11:58:52 Uhr
Goto Top
Vielen Dank face-smile