smee76
Goto Top

Dateien in Unterordnern in weitere Unterordner sortieren und umbennen

Als Anfänger in der Batchprogrammierung bin ich auf diese Seite gestoßen
und erhoffe mir guten Rat und Hilfe.

Ich habe folgendes Problem.

In einem Ordner befinden sich Unterordner welche Dateien beinhalten.
Diese Dateien sollen in weitere Unterordner sortiert werden und umbenannt werden.

Folgendes Schema ist in etwa anzunehmen:

E:\Dokumentation\Rechenzentrum als Ausgangsverzeichnis

E:\Dokumentation\Rechenzentrum\Raum1
als Unterverzeichnis
E:\Dokumentation\Rechenzentrum\Raum2 als Unterverzeichnis
E:\Dokumentation\Rechenzentrum\Raum3
als Unterverzeichnis

E:\Dokumentation\Rechenzentrum\Raum1\01HE39_001_M13.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum1\01HE39_001_M85.sor
als Datei
E:\Dokumentation\Rechenzentrum\Raum1\01HE39_002_M13.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum1\01HE39_002_M85.sor
als Datei
E:\Dokumentation\Rechenzentrum\Raum1\01HE41_001_M13.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum1\01HE41_001_M85.sor
als Datei
E:\Dokumentation\Rechenzentrum\Raum1\01HE41_002_M13.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum1\01HE41_002_M85.sor
als Datei

E:\Dokumentation\Rechenzentrum\Raum2\06HE15_001_M13.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum2\06HE15_001_M85.sor
als Datei
E:\Dokumentation\Rechenzentrum\Raum2\06HE15_002_M13.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum2\06HE15_002_M85.sor
als Datei
E:\Dokumentation\Rechenzentrum\Raum2\06HE19_001_M13.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum2\06HE19_001_M85.sor
als Datei
E:\Dokumentation\Rechenzentrum\Raum2\06HE19_002_M13.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum2\06HE19_002_M85.sor
als Datei


Aussehen sollte das ganze hinterher in etwa so:

E:\Dokumentation\Rechenzentrum\Raum1\01HE39\1300\01HE39_001.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum1\01HE39\1300\01HE39_002.sor
als Datei

E:\Dokumentation\Rechenzentrum\Raum1\01HE39\850\01HE39_001.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum1\01HE39\850\01HE39_002.sor
als Datei

E:\Dokumentation\Rechenzentrum\Raum1\01HE41\1300\01HE41_001.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum1\01HE41\1300\01HE41_002.sor
als Datei

E:\Dokumentation\Rechenzentrum\Raum1\01HE41\850\01HE41_001.sor als Datei
E:\Dokumentation\Rechenzentrum\Raum1\01HE41\850\01HE41_002.sor
als Datei


wobei HExx Unterordnerkriterium 1 ist (die anderen Zeichen müssen aber auch bleiben ) und M13 für den Ordner 1300 und M85 für den Ordner 850 steht
Das ganze brauche ich um Messprotokolle zur Auswertung vorzubereiten und das sind ne ganze Menge.

Ich hoffe ich habe es halbwegs verständlich ausgedrückt.

Vielen dank schonmal im Voraus


Gruss Smee
Kommentar vom Moderator Biber am Aug 22, 2011 um 19:23:39 Uhr
...sortieren und umbennen
Set /a rgc+=1
#773

Content-Key: 171884

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

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

Member: Skyemugen
Skyemugen Aug 22, 2011 at 18:23:41 (UTC)
Goto Top
Aloha und willkommen im Forum!

Nun wir erhoffen uns gerade neu Neuankömmlingen eigentlich erst einmal Begrüßungen *grübel* und
Vielen dank schonmal im Voraus

Wird bei uns ungern gelesen face-wink

Du suchst Hilfe & Rat und bist
Anfänger in der Batchprogrammierung
... nun, hast du selbst bereits versucht, etwas zu erstellen, wenn ja: Wie weit bist du gekommen, wo hapert es gerade?

Auch wenn wir gerne fertige Skripte hinsetzen, das hier wäre mit Hilfe der Forumssuche, dem Tutorial zur Tutorial zur FOR-Schleife sowie einigen Hinterfragungen selbst zu schaffen face-wink

greetz André

P.S.: Erstmal schön alten Godzilla-Film gucken, dann kann man hier weitersehen ^_^
P.P.S.: Weitere Unterverzeichnisse unterhalb RaumX existieren nicht?
Member: Smee76
Smee76 Aug 22, 2011 at 18:35:10 (UTC)
Goto Top
Hallo,
erstmal sorry fürs nicht begrüßen,das ist mir glatt durchgegangen,
da ich hier kurz vor dem Verzweifeln stehe.

Es hapert genau an den for schleifen.

Zuerst muss ich eine Ordnerstruktuer tiefer um dort dann die benötigten
"neuen" Ordner anzulegen. In die Ordnerstruktur komme ich, scheitere dann aber
daran die Benötigten Unterordner anzulegen.
Da sich der Ordnername ja aus den Dateien ergibt.
In diesen Ordner muessen dann ja wieder Ordner erstellt werden,
diese sind immer gleich 850 und 1300.

Ist das dann schon die dritte for schleife ?

Und dann muessen die Dateien noch verschoben und umbenannt werden.

Achja, meinen Ansatz habe ich hier aus dem Forum, aber irgendwie ist
das dann doch alles ein bissel zu hoch für mich.

Gruß Smee
Member: Skyemugen
Skyemugen Aug 22, 2011 at 19:11:36 (UTC)
Goto Top
Aloha,

Achja, meinen Ansatz habe ich hier aus dem Forum, aber irgendwie ist
das dann doch alles ein bissel zu hoch für mich.

welchen Ansatz, ich seh keinen ... *mich umseh*

ach, was soll's der Film macht gerade gute Laune, daher spendier ich dir eben das volle Programm *gg*

Ich interpretiere also, dass es nur 13 und 85 gibt, ja?

@echo off & setlocal
set "Pfad=E:\Test"  
for /d %%s in ("%Pfad%\*") do (  
	pushd %%s
	for /f "tokens=1-3 delims=_" %%m in ('dir /b /a-d *_*_*.sor 2^>nul') do call :Ablauf %%m %%n %%o  
	popd
)
pause
goto :eof

:Ablauf
set "Zahl=%~n3"  
set "Zahl=%Zahl:~-2%"  
if %Zahl% equ 13 (set "Ordner=%1\%Zahl%00") else (set "Ordner=%1\%Zahl%0")  
set "Datei=%1_%2.sor"  
ren "%1_%2_%3" "%Datei%"  
if not exist "%Ordner%" md "%Ordner%"  
move "%Datei%" "%Ordner%">nul  
goto :eof

Da der Code beim TV-gucken erstellt worden ist trotzdem getestet würde ich dennoch erst einmal Testdaten durchjagen als Enddaten face-wink ist generell sinnvoll

bei Fragen, immer raus damit

greetz André

edit passt noch nicht, habe mich verguckt, es soll ja 850 werden, nicht 8500 wie 1300 face-wink, mache gleich Korrektur auf 850 & 1300 korrigiert
edit for /d
Member: Smee76
Smee76 Aug 22, 2011 at 19:28:22 (UTC)
Goto Top
Vielen Dank schonmal für deine Bemühungen.

Ich hoffe das lenkt nicht zu sehr von Godzilla ab ...

Es gab da ein kleines missverständnis,
und zwar ist der String Raum so nicht wörtlich gemeint gewesen.

E:\Dokumentationen\Rechenzentrum\RZ10-R1-VS11 => E:\Dokumentationen\Rechenzentrum\RZ10-R1-VS11\R1-VS11-HE03\1300 und E:\Dokumentationen\Rechenzentrum\RZ10-R1-VS11\R1-VS11-HE03\850
E:\Dokumentationen\Rechenzentrum\RZ10-R1-VS15
E:\Dokumentationen\Rechenzentrum\RZC-029-1-02
E:\Dokumentationen\Rechenzentrum\RZC-029-1-03
E:\Dokumentationen\Rechenzentrum\U22-VS03

so lauten die pfade dann konkret

btw

mein Ansatz (zum grinsen)

@echo off & setlocal
for /d %%v in ("E:\Dokumentationen\Rechenzentrum\*.*") do (
echo %%v\test
)
Member: Skyemugen
Skyemugen Aug 22, 2011 at 19:38:29 (UTC)
Goto Top
Aloha,

nun, ich habe deshalb nur nach Raum explizit gesucht, da ich nicht sicher bin, ob in dem Verzeichnis auch andere - nicht relevante - Unterverzeichnisse vorhanden sein könnten, die dann mit abgeklappert werden - gut, das würde erst evtl. unschön, wenn die auch .sor-Dateien haben, die nicht angefasst werden sollen. Wenn dem nicht so ist, nimm einfach ^|findstr /B "Raum" raus.

Deine Endstruktur unterscheidet sich deutlich vom Beispiel ...
01HE03
zu
R1-VS11-HE03
*grübel*
Willst du jetzt noch Unterteile des Raumnamens ins Unterverzeichnis oder sind diese bereits im Dateinamen enthalten?
Sind RZ nur die Räume oder auch U22?

greetz André

ich mag es nicht, wenn sich wichtige Komponenten derart drastisch ändern ...
Member: Smee76
Smee76 Aug 22, 2011 at 19:54:48 (UTC)
Goto Top
Es gibt keine Unterordner die nicht angefasst werden sollen

Die komplette Unterordner Struktur lässt sich glaube ich aus dem Dateinamen erschlüsseln.
Es muss halt nur alle Ordner durchlaufen.

E:\Dokumentationen\Rechenzentrum\RZ10-R2-VS11\R2-VS11-HE03_001_M13.sor R2-VS11-HE03=neuer Ordner ; M13= Unterordner im neuen Ordner mit namen 1300

E:\Dokumentationen\Rechenzentrum\RZ10-R2-VS11\R2-VS11-HE03\
E:\Dokumentationen\Rechenzentrum\RZ10-R2-VS11\R2-VS11-HE03\1300\R2-VS11-HE03_001.sor so dann fertig halt.

Sorry =/
leider noch keinen plan wann etwas wichtig ist ...


Raum hab ich rausgenommen, sieht jetzt super aus.
Jetzt muss ich es nur noch verstehen ^^.

Dankö =D
Member: Skyemugen
Skyemugen Aug 22, 2011 at 20:09:10 (UTC)
Goto Top
Aloha,

jo, habe dann auch for /f durch for /d ersetzt, da durch Wegfallen des findstr eine Befehlsverwendung von dir auch nicht mehr nötig ist und so habe ich auch gleich das erste pushd mit wegrationalisiert hat noch ein popd am Ende gefehlt *pfeif*

Dann sollte das ja alles soweit passen.

Bei Fragen zur Verarbeitung etc. einfach fragen. außer es ist offensichtlich face-wink

greetz André
Member: Smee76
Smee76 Aug 22, 2011 at 20:12:26 (UTC)
Goto Top
Vielen Dank nochmal

Gruß Smee