original-mei
Goto Top

Umstrukturierung von Verzeichnissen

Hallo zusammen,

nach einigen Stunden komme ich jetzt nicht mehr weiter und erhoffe mir hier Hilfe von euch.

Hier erstmal der Sachverhalt:
Ich habe ein Verzeichnis welches umstrukturiert werden muss. Bisher ist es nach dem folgeden Schema aufgebaut:
W:\1000 - Ein_Name
W:\1001 - Bla
W:\1002 - AndererName
W:\1005 - Blubb und so
...

Dies geht so weiter bis zum Ordner 5520.
Alle diese Ordner erhalten bis zu 3 Unterordner.
- Dokumentation
- Datenträger
- Information
Diese 3 können alle oder auch nur teilweise vorkommen. (Aber es ist immer mindestens einer vorhanden, andernfalls fehlt der Überordner wie im Beispiel oben die Ordner 1003 und 1004.

Jeder dieser Ordner erhält wieder einen oder mehrere Ordner. Ich nehme sie jetzt einfach mal A, B, C und D.

Hier mal ein Auszug:
37811ccbe394c97809a43a9e7bd6d17c

Nun mein Problem:
Ansatt das die Order A, B,C und D in den Ordnern Dokumentation, Datenträger und/oder Information liegen, sollen die 3 genannten Ordner innerhalb der Ordner A, B,C, und D liegen. Natürlich darf dabei der Inhalt nicht verloren gehen.

Bisher kam ich soweit:

@CHCP 1252
@REM Umstellen der Zeichentabelle auf die westeuropäische für die Verwendung von Umlaute

FOR /L %%N IN (1000,1,5520) DO (
@REM Schleife von 1000 bis 5520 für das Erfassen aller Ordner

SET /A doku=0
SET /A info=0
SET /A file=0
SET /A mandant=0
SET /A folder=0
@REM Zurücksetzen der Variabeln auf 0

	IF EXIST "W:\%% -*" (  
		CD "W:\%%N -*"  
		SET FPATH="%CD%"  
		
		echo %FPATH%
		
		pause
		@REM Wechseln in das Unterverszeichnis
		
		IF EXIST "Dokumentation" (  
			SET doku=1
			IF EXIST "Information" (  
				SET info=1
				IF EXIST "Datenträger" (  
					SET file=1
					@REM Überprüfen ob die Unterverzeichnise existieren
					
					CD "Datenträger"  
					FOR /F %%i in ('dir /B /Ad') DO (  
						SET /A cfolder=cfolder+1
						@REM Zählen der Ordner im entsprechenden Verzeichnis
						
						echo %cfolder%
						
						xcopy "W:\%FPATH%\Datenträger\* " "W:\%FPATH%\" /C /I /R /Y  
					)
				)
			)
		)
	)
)

Leider steht sogar in meinen echo Ausgaben nix.

Content-Key: 285115

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

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

Member: Endoro
Endoro Oct 10, 2015 at 04:40:45 (UTC)
Goto Top
Hey,
zeichne mal den Sollzustand auf, ich versteh deine Beschreibung nicht.
Gruß, Endoro
Member: original-mei
original-mei Oct 12, 2015 at 11:58:09 (UTC)
Goto Top
Zitat von @Endoro:

Hey,
zeichne mal den Sollzustand auf, ich versteh deine Beschreibung nicht.
Gruß, Endoro


Hallo Endoro,

hier der Sollzustand:

5a73617e4ccd2fd00e7664352a70e3d9
Member: Endoro
Endoro Oct 13, 2015 at 01:45:28 (UTC)
Goto Top
Hey, dann müssten zum Beispiel im Unterordner 3459 die Dateien der beiden KSK-Verzeichnisse gemerged werden und die Verzeichnisse Dokumentation und Information dupliziert werden? Meine Frage zielt darauf ab, wo sich Dateien befinden und was mit denen geschehen soll, denn ein so strukturierter Verzeichnisbaum ist leicht zu erstellen.
Gruß, Endoro
Member: original-mei
original-mei Oct 13, 2015 at 10:19:29 (UTC)
Goto Top
Hallo Endoro und danke schon mal für deine Hilfe.

Die Daten welche in
"3459 - xxx\Dokumentation\KSK\" lagen, müssen anschliessend in
"3459 - xxx\KSK\Dokumentation\" zu finden sein, und die welche beispielsweise in
"3459 - xxx\Informationen\SKB\" lagen, müssen anschliessend in
"3459 - xxx\SKB\Informationen\" auffindbar sein.
Gemerged wird Endeffekt nichts. Es muss die zweite und dritte Ebene der Ordnerstruktur getauscht werden.
Member: Endoro
Endoro Oct 16, 2015 updated at 04:07:20 (UTC)
Goto Top
Hey,
der beste Weg, der mir eingefallen ist, geht über ein temporäres Verzeichnis. Dafür sollten sich alle zu bearbeitenden Ordner und nur die in einem übergeordneten Ordner befinden, also zB so:
W:\ROOT\1000 - Ein_Name
W:\ROOT\1001 - Bla
W:\ROOT\1002 - AndererName
W:\ROOT\1005 - Blubb und so

Dieser Ordner, hier ROOT\, wäre der Aufrufparameter für die folgende Batch:
@echo off &setlocal disabledelayedexpansion
if "%~1"=="" echo Missing folder name.&exit /b 1  
cd "%~1" || (echo Folder "%~1" not found.&exit /b 1)  

set "TempDir=%random%.TMP"  
echo TMP dir is "%TempDir%".  
for /d %%a in (*) do for /d %%b in ("%%~a\*") do for /d %%c in ("%%~b\*") do (  
	md "..\%TempDir%\%%~a\%%~nxc\%%~nxb"   
	move "%%~c\*" "..\%TempDir%\%%~a\%%~nxc\%%~nxb"  
)

Das Löschen von ROOT\ und Umbenennen des temporären Verzeichnis bitte von Hand erledigen.
Gruß, Endoro