Dateien anhand Entscheidung in Excel-Tabelle umbenennen
Die Ordnerstruktur mit den Dateien ist folgende:
Quelle:
C:\PDF\A\Ordner-1
bis
C:\PDF\A\Ordner-100000
.
C:\PDF\...\Ordner-1
bis
C:\PDF\...\Ordner-100000
In den Ordnern (1 bis 100000) befinden sich jeweils PDF-Dateien unterschiedlicher Anzahl beginnend mit der Bezeichnung datei1.pdf usw..
Excel Liste:
Spalte A zeigt als Beispiel die Oberordner (Menge ca. 10.000)
Spalte B zeigt als Beispiel die Unterordner (Menge ca. 100.000)
Spalte C zeigt als Beispiel den Status (Entscheidung) ja oder nein

In den Unterordnern befinden sich eine unterschiedliche Anzahl von PDF-Dateien, die Anhand des Status (der Entscheidung) umbenannt werden sollen.
Status=nein --> Datei1.pdf in jeweiligen Unterordner umbenennen in Datei1.nein usw.
Status=ja --> Datei1.pdf wird nicht umbenannt usw. (also keine Aktion in dem jeweiligen Unterordner)
Ziel:
Ergebnisbeispiel:
C:\PDF\A\1\Datei1.pdf
C:\PDF\A\1\Datei2.pdf
.
C:\PDF\A\2\Datei1.nein
C:\PDF\A\2\Datei2.nein
C:\PDF\A\2\Datei3.nein
usw.
Ansatz:
Mein erster Ansatz war folgender:
Weiter bin ich aktuell nicht gekommen.
Schön wäre wenn dies als Powershell-Variante realisiert werden könnte.
Vorab schon mal Danke für Eure Unterstützung.
Quelle:
C:\PDF\A\Ordner-1
bis
C:\PDF\A\Ordner-100000
.
C:\PDF\...\Ordner-1
bis
C:\PDF\...\Ordner-100000
In den Ordnern (1 bis 100000) befinden sich jeweils PDF-Dateien unterschiedlicher Anzahl beginnend mit der Bezeichnung datei1.pdf usw..
Excel Liste:
Spalte A zeigt als Beispiel die Oberordner (Menge ca. 10.000)
Spalte B zeigt als Beispiel die Unterordner (Menge ca. 100.000)
Spalte C zeigt als Beispiel den Status (Entscheidung) ja oder nein

In den Unterordnern befinden sich eine unterschiedliche Anzahl von PDF-Dateien, die Anhand des Status (der Entscheidung) umbenannt werden sollen.
Status=nein --> Datei1.pdf in jeweiligen Unterordner umbenennen in Datei1.nein usw.
Status=ja --> Datei1.pdf wird nicht umbenannt usw. (also keine Aktion in dem jeweiligen Unterordner)
Ziel:
Ergebnisbeispiel:
C:\PDF\A\1\Datei1.pdf
C:\PDF\A\1\Datei2.pdf
.
C:\PDF\A\2\Datei1.nein
C:\PDF\A\2\Datei2.nein
C:\PDF\A\2\Datei3.nein
usw.
Ansatz:
Mein erster Ansatz war folgender:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# CSV-Datei mit drei Spalten für Überschrift 'Oberordner' ; 'Unterordner' und 'Status' und ';' als Trenner
$sourcefile = 'C:\PDF\Script\Excel-Liste.csv'
# Ordner mit Unterordnern
$quelle1 = 'C:\PDF'
Import-CSV $sourcefile -Delimiter ";" | %{
# quellordner
$source = "$quelle1\$($_.Oberordner)"
# wenn Status = nein für Unterordner in Tabelle dann benenne alle Dateien im Unterordner um - *.pdf nach *.nein
# eventuell mit rename-item
if ...
Schön wäre wenn dies als Powershell-Variante realisiert werden könnte.
Vorab schon mal Danke für Eure Unterstützung.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 398972
Url: https://administrator.de/forum/dateien-anhand-entscheidung-in-excel-tabelle-umbenennen-398972.html
Ausgedruckt am: 27.04.2025 um 17:04 Uhr
8 Kommentare
Neuester Kommentar
Servus.
Bei einer CSV die so aussieht:
Nimmst du:
Oder wenn es ein XLSX File ist dass genau so aufgebaut wie in deiner Grafik oben:
Viel Spaß
Grüße Uwe
Bei einer CSV die so aussieht:
Oberordner;Unterordner;Status
A;1;ja
A;2;nein
A;3;ja
A;4;nein
B;1;ja
B;2;nein
B;3;ja
B;4;nein
1
2
3
4
5
6
2
3
4
5
6
$folder = 'D:\Root'
$liste = 'D:\darebo\liste.csv'
$csv = Import-CSV $liste -Delimiter ";"
$csv | ?{$_.Status -eq 'nein'} | %{
gci "$folder\$($_.Oberordner)\$($_.Unterordner)\*.pdf" -File | rename-item -NewName {"$($_.BaseName).nein"} -verbose
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$folder = 'D:\Root'
$liste = 'D:\darebo\liste.csv'
# Excel Objekt
$objExcel = New-Object -Com Excel.Application
# Mappe öffnen
$wb = $objExcel.Workbooks.Open($liste)
# Excel anzeigen
$objExcel.Visible = $true
$objExcel.DisplayAlerts = $false
$ws = $wb.Sheets.Item(1)
$ws.Range("A1:A" + $ws.Cells($ws.Rows.Count,2).End(-4162).Row) | %{
if ($_.Value() -ne ""){
$oberordner = $_.Value()
}
if($_.Offset(0,2).Value() -eq 'nein'){
gci "$folder\$oberordner\$($_.Offset(0,1).Value())" -Filter *.pdf -File | rename-item -NewName {"$($_.BaseName).nein"} -verbose
}
}
$objExcel.DisplayAlerts = $true
# Dokument schließen
$wb.Close($false) | out-null
# Excel schließen
$objExcel.Quit()
# Ressourcen freigeben
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($objExcel) | out-null
Grüße Uwe
1.
2.
3.
Sonst noch Wünsche? Massage ...?!2.
3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$folder = 'D:\Root'
$liste = 'D:\darebo\liste.csv'
$csv = Import-CSV $liste -Delimiter ";"
$csv | ?{$_.Status -eq 'nein'} | %{
$f = "$folder\$($_.Oberordner)\$($_.Unterordner)"
if (Test-Path $f){
gci $f -Filter *.pdf -File | rename-item -NewName {"$($_.BaseName).nein"} -WhatIf -verbose
}
}
# logging ------
# Alle Ordner im File generieren
$folder_in_file = $csv | %{"$folder\$($_.Oberordner)\$($_.Unterordner)"}
# Alle Ordner im Dateisystem auflisten
$folder_in_filesystem = gci "$folder\*\*" -Directory | select -Expand Fullname
# Ordnernamen vergleichen
$compare = compare $folder_in_file $folder_in_filesystem -PassThru
# CSVs generieren
# log für Ordner die im Dateisystem nicht existieren
$compare | ?{$_.SideIndicator -eq '<='} | %{[pscustomobject]@{Name=$_}} | export-csv "$folder\missing_in_filesystem.csv" -Delimiter ";" -NoType -Encoding UTF8
# log für Ordner die im Dateisystem existieren aber nicht in der Liste
$compare | ?{$_.SideIndicator -eq '=>'} | %{[pscustomobject]@{Name=$_}} | export-csv "$folder\missing_in_list.csv" -Delimiter ";" -NoType -Encoding UTF8
dein zweites Script (xlsx-Variante) läuft durch, aber macht nicht das was es soll. Es benennt die betroffenen Dateien nicht um.
Weil im Rename-Item Befehl der Parameter -whatif gesetzt war der dich den Vorgang hätte testen lassen und deswegen keine wirklich Umbenennung vornimmt sondern nur anzeigt was passieren würde Vielleicht verstehe ich das Script auch nicht vollständig
Jop., aber womit wird beim "gci" Aufruf (Zeile 17) der Unterordner angesprochen?
Mit dem Inhalt der Zellen natürlich So jetzt husch husch, ab in den Powershell Kurs, du sollst ja zumindest noch minimal was selbst machen und uns hier nicht als Clickworker beschäftigen
Grüße Uwe
Moin,
Ja, gerne. Und 'n Korn und 'n Bier.
Liebe Grüße
Erik
Ja, gerne. Und 'n Korn und 'n Bier.
Liebe Grüße
Erik
Ha ha ! 
... und nen Kümmel für den Lümmel
. Alaaf.