infokern
Goto Top

Ordner zu bestimmte Ordner verschieben und Dateien umbenennen

Hallo Ihr Lieben,

ich habe ein kleines Problemchen und mein letztes konnte hier super gelöst werden.
Ich möchte verschiedene Ordner in "Über"-Ordner verschieben. Bspw:

4 Ordner Anton, Berta, Cesar, Bettina sollen verschoben werden bzw. zugeordnet werden in die Überordner Jungs, Mädchen.
Also Berta und Bettina kommen in Mädchen und die anderen beiden in den Ordner Jungs.
Natürlich gibt es viel mehr Unter- und Überordner, diese heißen aber immer gleich, sodass die Zuordnung immer die gleiche sein wird. D.h. wenn Anton und co. verschoben sind, kommen eine Woche später wieder die gleichen Ordner, die dann in die inzwischen geleerten Überordner verschoben werden sollen.

Das ist mein Hauptproblem.
Ein nettes I-Tüpfelchen wäre es, wenn alle Dateien innerhalb der Ordner umbenannt werden. Bspw. heißen diese (test)Name.docx. Es soll dann der Teil in der Klammer inkl. der Klammer gelöscht werden, nachdem die Ordner oder auch davor verschoben wurden.

Vielen Dank für Eure Hilfe

Content-ID: 1437132182

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

Ausgedruckt am: 25.11.2024 um 12:11 Uhr

em-pie
em-pie 27.10.2021 um 13:46:54 Uhr
Goto Top
Moin,

entweder ist dein Beispiel suboptimal oder es ist gewollt und bringt weitere Probleme mit sich:
4 Ordner Anton, Berta, Cesar, Bettina sollen verschoben werden bzw. zugeordnet werden in die Überordner Jungs, Mädchen.
Also Berta und Bettina kommen in Mädchen und die anderen beiden in den Ordner Jungs.

Wer entscheidet, ob Michell, Kay und Pasqual nun männlich oder weiblich sind?
Das gilt es zu klären, damit dir entsprechend geholfen werden kann.

Kernfrage: nach welchem Kriterium muss der Ordner einsortiert werden?

Gruß
em-pie
Infokern
Infokern 27.10.2021 um 14:35:29 Uhr
Goto Top
Ich verstehe, was du meinst. Es wäre entweder über eine externe Datenquelle möglich (bspw.: Excel Spalte A steht der Name und Spalte B der Geschlechtsordner) oder man weißt im Code direkt dem Namen den Ordner zu? Wäre eher eine Fleißarbeit und da würde mir ein Beispiel reichen. Ich kenne mich mit Batch-Programmierung leider nicht aus und weiß daher nicht, ob und wie externe Quellen eingebunden werden können.

Liebe Grüße
PeterPanter
PeterPanter 27.10.2021 um 14:43:02 Uhr
Goto Top
Hi,

wenn ich das recht verstehe, sollen die Ordner, die immer gleich heißen, einmal pro Woche(?) verschoben werden. Also ich verschiebe (z.B.) Samstag Anton in Jungs. Im Ordner Jungs wird der Anton von irgendeinem anderen Prozess gelöscht... Nächsten Samstag wieder Anton in Jungs verschieben...
PwerShell "Move-Item" https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Oder CMD "move" https://docs.microsoft.com/de-de/windows-server/administration/windows-c ...

Zitat von @Infokern:
Natürlich gibt es viel mehr Unter- und Überordner, diese heißen aber immer gleich...

Dann einfach die ganzen Antons etc per Script verschieben und gut.
(Oder die Struktur hier mal genauer beschreiben...) Gegenfrage: wieviel ist "viel mehr"?

/pp
149569
Lösung 149569 27.10.2021 um 14:54:04 Uhr
Goto Top
$sourcefolder = 'D:\quelle'  
$destinationfolder = 'D:\ziel'  

$foldermap = @{
    'Anton' = 'Jungs'  
    'Cesar' = 'Jungs'  
    'Anna' = 'Mädchen'  
    'Berta' = 'Mädchen'  
}

Get-ChildItem $sourcefolder -Directory | ?{$_.Name -in $foldermap.Keys} | %{
    Get-ChildItem $_.FullName -Recurse -File | rename-item -NewName {$_.Name -replace '^\(.*\)'}  
    move-item $_.FullName -Destination "$destinationfolder\$($foldermap.($_.Name))" -Force  
}
PeterPanter
Lösung PeterPanter 27.10.2021 um 15:17:07 Uhr
Goto Top
Oder als cmd/Batch mit Parmeter-Liste (Liste.csv) mit Name,J bzw Name,M
@echo off
set quellpfad=C:\Temp\CMD\
set zielpfadJungs=C:\Temp\CMD\J
set zielpfadMaedl=C:\Temp\CMD\M
for /f "tokens=1,2 delims=," %%G in (%quellpfad%\Liste.csv) DO (  
	if %%H==J (
		move %quellpfad%\%%G %zielpfadJungs%
	) else (
		move %quellpfad%\%%G %zielpfadMaedl%
	)
)
Infokern
Infokern 28.10.2021 um 09:29:57 Uhr
Goto Top
Der Code von hacktor wäre die Richtung, die ich mir vorstelle. Es sind 56 Unterordner, die auf 13 Überordner aufgeteilt werden. Ich würde mir am liebsten dann einmalig die Mühe machen und die Zuordnung im Stil von hacktor eintippen. Leider läuft sein Code bei mir nicht. Ich habe ihn in eine .txt gehauen und dann als .bat gestartet. Ich bin eher im Bereich vba beheimatet daher bin ich hier recht aufgeschmissen^^
149569
149569 28.10.2021 aktualisiert um 09:39:53 Uhr
Goto Top
Zitat von @Infokern:

Leider läuft sein Code bei mir nicht. Ich habe ihn in eine .txt gehauen und dann als .bat gestartet. I
😆😆 Kein Wunder, das ist ja auch Powershell, hätte man sich den Inhalt zumindest mal durchgelesen hätte das eigentlich auffallen müssen ...
Kapitel 1: Erste Schritte mit PowerShell
Infokern
Infokern 28.10.2021 aktualisiert um 10:42:19 Uhr
Goto Top
Ahh ja cool dann hab ich es und konnte auch den Aufruf in die Batchdatei einbauen danke dir.
Und alle Dateien werden sogar umbenannt Danke dir face-smile letzte Frage: Wie fange ich Umlaute auf? Sobald ein Ordner ein Umlaut drin hat, wird er nicht verschoben
149569
Lösung 149569 28.10.2021 aktualisiert um 11:07:26 Uhr
Goto Top
Zitat von @Infokern:
dann hab ich es und konnte auch den Aufruf in die Batchdatei einbauen danke dir.
letzte Frage: Wie fange ich Umlaute auf? Sobald ein Ordner ein Umlaut drin hat, wird er nicht verschoben

Das Encoding deiner Batch (chcp) oder das Dateiencoding deiner Powershell-Datei stimmt nicht.
Infokern
Infokern 28.10.2021 um 13:57:21 Uhr
Goto Top
ok danke alles läuft face-smile