Gleichnamige Dateien in EIN Verzeichnis kopieren und Verzeichnisnamen hinzufügen

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
msmopic
Junior Member
Junior Member
Posts: 3
Joined: 2023-07-17, 09:33 UTC

Gleichnamige Dateien in EIN Verzeichnis kopieren und Verzeichnisnamen hinzufügen

Post by *msmopic »

Ich habe folgende Problemstellung, die ich allein nicht gelöst bekommen habe:

Ich habe eine Reihe von GLEICHNAMIGEN Dateien innerhalb einer Verzeichnisstruktur, die ich zunächst suchen und dann in EIN Zielverzeichnis kopieren möchte. Im Prinzip könnte ich die Dateien mit einer Nummer hochzählen lassen, das klappt. Aber ich möchte gerne schon anhand des Dateinamens erkennen können, aus welchem Verzeichnis die jeweilige Datei kopiert wurde. Gibt es eine Möglichkeit, beim Kopiervorgang das Quell-Verzeichnis an den Dateinamen anzuhängen?

Zur Veranschaulichung:

Ist-Zustand:
VerzeichnisA
- dependency-license-report.html
VerzeichnisB
- dependency-license-report.html
VerzeichnisC
- dependency-license-report.html
...

Gewünschter Endzustand:
C:\temp\VerzeichnisA_dependency-license-report.html
C:\temp\VerzeichnisB_dependency-license-report.html
C:\temp\VerzeichnisC_dependency-license-report.html
User avatar
Dalai
Power Member
Power Member
Posts: 9461
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Re: Gleichnamige Dateien in EIN Verzeichnis kopieren und Verzeichnisnamen hinzufügen

Post by *Dalai »

Ein Umbenennen während des Kopierens gibt es nicht, aber man kann das in mehreren Schritten durchführen.

Dateien suchen und Suchergebnis anwenden. Dann Multi-Umbenenn-Tool (MUT) aufrufen (Strg+M) und in die Umbenennmaske

Code: Select all

[P]_[N]
eingeben, Vorschau begutachten und wenn alles gut aussieht, Start-Button drücken. MUT schließen, Suche nochmals durchführen (ggf. mit geänderten Suchparametern) und abermals Suchergebnis anwenden. Dann im anderen Panel Zielverzeichnis öffnen und alle Dateien markieren (Strg+A) und wie gewohnt kopieren.

Grüße
Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
Stefan2
Power Member
Power Member
Posts: 4193
Joined: 2007-09-13, 22:20 UTC
Location: Europa

PowerShell: Gleichnamige Dateien in EIN Verzeichnis kopieren und Verzeichnisnamen hinzufügen

Post by *Stefan2 »

Eventuell könnten wir auch irgendwie %B einsetzen ?
21.04.21 Added: New placeholder %B for part of path (including branch view paths): %B or %B0 parent, %B1 grandparent etc. %B-, %B-1, %B-2 same but without branch view (32/64)

(zu wenig Zeit zum ausprobieren)



- - -

oder zB über ein PowerShell-Skript:

$Target='C:\Temp\Target';gci -rec FindMe.png|ForEach{$Parent=$(split-path -leaf $_.DirectoryName);Copy $_ $("$Target\"+"$Parent"+'_'+ "$($_.Name)") -whatif }

- führe das Skript im obersten Ordner deiner Verzeichnisstruktur aus.
- Dateien mit Namen "FindMe.png" werden
- - - mit ($Parent und '_') am Dateienfang ergänzt,
- - - und nach $Target kopiert (dieser Ordner muss bereits vorher existieren).
- !!! von gleichnamigen Dateien (wg. gleichnamigen Parentordner) wird nur die Erste kopiert !!!


PS X:\Project\2023XYZ>$Target='C:\Temp\Target' ; gci -rec FindMe.png|ForEach{$Parent=$(split-path -leaf $_.DirectoryName) ; Copy $_ $("$Target\"+"$Parent"+'_'+ "$($_.Name)") -whatif }
WhatIf: Ausführen des Vorgangs "Datei kopieren" für das Ziel "Element: X:\Project\2023XYZ\Unterordner 1\Fotos2019\FindMe.png Ziel: C:\Temp\Target\Fotos2019_FindMe.png".
WhatIf: Ausführen des Vorgangs "Datei kopieren" für das Ziel "Element: X:\Project\2023XYZ\Unterordner 2\Fotos-2020\FindMe.png Ziel: C:\Temp\Target\Fotos-2020_FindMe.png".
WhatIf: Ausführen des Vorgangs "Datei kopieren" für das Ziel "Element: X:\Project\2023XYZ\Unterordner 3\Fotos_2021\FindMe.png Ziel: C:\Temp\Target\Fotos_2021_FindMe.png".
PS X:\Project\2023XYZ>




Im Einzelnen:

Code: Select all

$Target='C:\Temp\Target'; 
Get-ChildItem  -Recurse 'FindMe.png'  |
ForEach-Object{ 
        $Parent=$(Split-Path -Leaf $_.DirectoryName); 
        Copy-Item $_    $(   "$Target\"  +  "$Parent" + '_'  +   "$($_.Name)"   ) 
        -WhatIf 
}


- - -



oder zB mit dem Plugin TreeCopyPlus die Ordnerstruktur mit kopieren:
- gehe in einem Panel zum Zielordner
- wechsele ins andere Panel
- gehe zum Hauptordner
- öffne die Dateisuche
- suche nach der Datei
- klicke im Suchergebnis auf [anwenden]
- wähle aus der Liste alles aus
- drücke Alt+F5
- im Kopierdialog wähle das TreeCopyPlus-Plugin aus
- klicke auf [Einstellungen] und wähle aus, wie viele Ebenen nicht mit kopiert werden sollen (einfach am Pfad abzählen)
- klicke im Kopierdialog auf [OK]
Erledigt
Die Dateien wurden in den Zielordner kopiert, wobei die Ordnerstruktur ab der gewünschten Ebene mit erstellt wurde.



 
 
msmopic
Junior Member
Junior Member
Posts: 3
Joined: 2023-07-17, 09:33 UTC

Re: Gleichnamige Dateien in EIN Verzeichnis kopieren und Verzeichnisnamen hinzufügen

Post by *msmopic »

Vielen Dank euch! Jetzt habe ich sogar die Qual der Wahl :-)

@Stefan2 welchen Befehl müsste ich ausführen, um nicht nur das letzte Verzeichnis im Dateinamen zu haben, sondern den ganzen Pfad (möglichst ohne Qualifier)? Das wäre noch die Sahne auf dem Kuchen.
User avatar
Stefan2
Power Member
Power Member
Posts: 4193
Joined: 2007-09-13, 22:20 UTC
Location: Europa

PowerShell: Gleichnamige Dateien in EIN Verzeichnis kopieren und Verzeichnisnamen hinzufügen

Post by *Stefan2 »

msmopic wrote: 2023-07-27, 05:52 UTC @Stefan2 welchen Befehl müsste ich ausführen, um nicht nur das letzte Verzeichnis im Dateinamen zu haben,
sondern den ganzen Pfad (möglichst ohne Qualifier)? Das wäre noch die Sahne auf dem Kuchen.

VON:
C:\temp\FindMe und kopiere mit Ordnername\Unterordner 1\Fotos2019\FindMe.png
C:\temp\FindMe und kopiere mit Ordnername\Unterordner 2\Fotos-2020\FindMe.png
C:\temp\FindMe und kopiere mit Ordnername\Unterordner 3\Fotos_2021\FindMe.png
ZU:
C:\temp\Target\C_,_temp_,_FindMe und kopiere mit Ordnername_,_Unterordner 1_,_Fotos2019_FindMe.png
C:\temp\Target\C_,_temp_,_FindMe und kopiere mit Ordnername_,_Unterordner 2_,_Fotos-2020_FindMe.png
C:\temp\Target\C_,_temp_,_FindMe und kopiere mit Ordnername_,_Unterordner 3_,_Fotos_2021_FindMe.png



Versuche es mal so (alles eine lange Zeile):

$Target='C:\Temp\Target' ; Get-ChildItem -Recurse 'FindMe.png' | ForEach-Object{ $Parent=$($_.DirectoryName); $Parent=$Parent -replace(':') -replace('\\','_,_') ; Copy-Item $_ $("$Target\" + "$Parent" + '_' + "$($_.Name)" ) -WhatIf }



Nochmal, eingekürzt:
$T='C:\Temp\Target'; LS -rec 'FindMe.png'|ForEach{$P=$($_.DirectoryName);$P=$P -replace(':') -replace('\\','_',_);copy $_ $("$T\"+"$P"+'_'+"$($_.Name)") -WhatIf}




- führe das Skript im obersten Ordner deiner Verzeichnisstruktur aus.
- Dateien mit Namen "FindMe.png" werden
- - - mit ($Parent bzw. $P und '_') am Dateienfang ergänzt,
- - - und nach $Target bzw. $T kopiert (dieser Ordner muss bereits vorher existieren).
- !!! von gleichnamigen Dateien (wg. gleichnamigen Parentordner) wird nur die Erste kopiert !!!





Tipp:
Erstelle am Besten immer erst ein Backup deiner Dateien!, bevor du fremde Skripte ausführst.


Tipp:
Im TC gehe in den obersten Ordner deiner Verzeichnisstruktur.
- Öffne eine DOS-Box (Menü "Befehle > Kommandozeilenfenster öffnen"), dann bist du gleich im richtigen Verzeichnis.
- Führe dort den Befehl "powershell" aus, dann arbeitest du mit der PowerShell und kannst das obige Skript ausführen.


Tipp:
Ich habe in meiner "usercmd.ini" den eigenen Befehl:
[em_LaunchPowerShell]
cmd=PowerShell.exe

und in der "WINCMD.INI" den folgenden Tastaturshortcut definiert:
[Shortcuts]
;Use 'Ctrl+ letter o' to launch a DOS-Box in current path
C+o=cm_ExecuteDOS
;Use 'Ctrl+zero 0' to execute my user defined command to launch PoSh in current path
C+0=em_LaunchPowerShell


Tipp:
Falls es gefällt, kann man das Skript auch über einen Button aufrufen (notfalls in eine Textdatei schreiben und diese aufrufen),
oder ein UserDefiniertesKommando erstellen, welches man als Button-Kommando verwenden, und auch über einen Tastaturkürzel ausführen kann.

Tipp:
vvvvv siehe meine Signatur für unsere gesammelten Tipps&Tricks in deutscher sowie in englischer Sprache vvvvv
msmopic
Junior Member
Junior Member
Posts: 3
Joined: 2023-07-17, 09:33 UTC

Re: Gleichnamige Dateien in EIN Verzeichnis kopieren und Verzeichnisnamen hinzufügen

Post by *msmopic »

Perfekt! Jetzt bin ich voll und ganz zufrieden! Tausend Dank!
Post Reply