hancho
Goto Top

Dateien aus Unterordner verschieben und dabei umbenennen

Guten Tag liebe Community,

ich habe ein Problem, das ich nicht lösen kann. Ich möchte Dateien, die sich in Unterordnern befinden, verschieben und dabei umbenennen. Dabei soll dem Dateinamen beim Verschieben der Ordnername, der sich zwei Ebenen höher befindet, angehängt werden. Könnt ihr mir da helfen?

Content-Key: 526137

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

Printed on: April 19, 2024 at 19:04 o'clock

Member: TK1987
TK1987 Dec 16, 2019 updated at 08:49:33 (UTC)
Goto Top
@echo off

set Quellpfad="C:\Pfad\zum\Unterordner"  
set Zielpfad="C:\Test"  

for /f "Delims=" %%A in ('dir /a-d /b %Quellpfad%') do (  
	for /f "Delims=" %%B in ("%Quellpfad:"=%\..\..") do move "%Quellpfad:"=%\%%A" "%Zielpfad:"=%\%%~nA_%%~nB%%~xA"  
	)
Einfach Zeilen 4&5 anpassen.
Mitglied: 142232
142232 Dec 16, 2019 at 08:43:55 (UTC)
Goto Top
Oder mit Powershell
$quelle = 'c:\quelle'  
$ziel = 'd:\ziel'  
Get-Childitem $quelle -File -Recurse | move-item -Destination {"$ziel\$($_.Name)_$($_.Directory.Parent.Parent.Name)$($_.Extension)"} -verbose  
Member: erikro
erikro Dec 16, 2019 updated at 08:51:43 (UTC)
Goto Top
Moin,

mit der Powershell:

param(

    $path = "C:\woauchimmer",  
    $targetpath = "P:\wohinauchimmer"  

)
cd $path

$files = get-childitem -Path $path -file

foreach($file in $files) {

    # [string]$filepath = $(Get-ChildItem -path $file.fullname).Directory
    # $dirs = $filepath.split("\") 
    # $newname = $targetpath + "\" + $file.basename + $dirs[$dirs.length -2] + $file.extension 
    # Besser so:
    $newname = $targetpath + "\" + $file.basename + $file.directory.parent.parent.name  + $file.extension  
    move-item -path $file -Destination $newname

}

hth

Erik
Member: erikro
erikro Dec 16, 2019 at 08:49:44 (UTC)
Goto Top
Moin,

Zitat von @142232:
$_.Directory.Parent.Parent.Name

Das ist ja kühl. Den kannte ich noch nicht. face-wink

Liebe Grüße

Erik
Member: Kraemer
Kraemer Dec 16, 2019 at 08:55:43 (UTC)
Goto Top
Moin,
Zitat von @erikro:
cd $path
was willst du damit denn erreichen?

Gruß
Member: erikro
erikro Dec 16, 2019 at 09:39:44 (UTC)
Goto Top
Zitat von @Kraemer:

Moin,
Zitat von @erikro:
cd $path
was willst du damit denn erreichen?

Gruß

Na dass er im richtigen Verzeichnis ist. face-wink Beim Testen habe ich ohne das cd eine Fehlermeldung bekommen, dass er den Pfad nicht finden kann. Warum auch immer.
Member: hancho
hancho Dec 16, 2019 at 10:35:03 (UTC)
Goto Top
Moin,

vielen Dank für die Antworten.

ich habe folgendes Problem: Ich möchte Ordner umbenennen, die wie folgt heißen: "erledigt_40409_05_irgendeinstring"

Ich möchte diese Ordner nur auf die Zahlen reduzieren und am besten die Zahlen tauschen. Also beispielsweise sollte aus dem Ordnernamen "erledigt_40409_05_irgendeinstring" --> "05-40409" werden.

Ist das möglich mit einer Batch-Datei?

Vielen Dank vorab.
Mitglied: 142232
142232 Dec 16, 2019 updated at 10:56:26 (UTC)
Goto Top
Schon wieder Freitag? Wieder und vollkommen Off-Topic , der Herr
for /f "delims=" %%a in ('dir /b /ad /s "c:\quelle"') do for /f "tokens=2,3 delims=_" %%b in ("%%~nxa") do ren "%%a" "%%c-%%b"  
Member: hancho
hancho Dec 16, 2019 at 11:02:56 (UTC)
Goto Top
Das funktioniert so nicht.. Ich möchte ja den Ordnernamen umbennen.
Mitglied: 142232
Solution 142232 Dec 16, 2019 updated at 11:06:29 (UTC)
Goto Top
Zitat von @hancho:

Das funktioniert so nicht.. Ich möchte ja den Ordnernamen umbennen.
Doch ... siehe mein letzter Code, der macht das mit Ordnern, wofür ist wohl das dir /b /s /ad da ?

Ganz oben hast du übrigens, noch mal zur Erinnerung, geschrieben

Ich möchte Dateien, die sich in Unterordnern befinden, verschieben und dabei umbenennen.
Member: hancho
hancho Dec 16, 2019 at 11:05:52 (UTC)
Goto Top
Tut mir leid, mein Fehler. Funktioniert einwandfrei.