bjoernmadh
Goto Top

Brauche nen Robocopy Profi

Hallo.
Brauche Hilfe bei Robocopy. Die Funktion der Software ist mir bekannt und wird auch schon genutzt, aber nun soll es mal schwieriger werden.

Ich bin gerade dabei, unseren Windows 2003 Fileserver auf eine NetApp zu migrieren.
Das Problem was ich nun habe, ist die Zuordnung der HomeLaufwerke auf die entsprechenden Volumes.

Ich habe auf der NetApp 4 Volumes, auf die die Homelaufwerke kopiert werden sollen. Die Homelaufwerke sollen entsprechende des Anfangsbuchstabens des User auf die Volumes kopiert werden.
Es gibt a-e, f-k, l-r, s-z.

Die Homelaufwerke auf dem Windows Fileserver sind bisher nicht so geordnet, sondern nach Bereichen.

Strukturbeispiel:
firmaA
firmaA --> Gruppenlaufwerk Firma A
home --> Alle Homelaufwerke der Firma A
daumeier
meier
mueller
schulz


firmaB
firmaB --> Gruppenlaufwerk Firma B
home --> Alle Homelaufwerke der Firma B
albers
meyer
zohan

Brauche nun nen Script, was den Anfangsbuchstaben des Homelaufwerks scannt und dann in das entsprechenen Wolume eine Kopie macht. Mit dem /XD Parameter wollte ich auch nicht arbeiten.

Danke für die Hilfe

Content-ID: 178050

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

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

bastla
bastla 23.12.2011 um 07:58:41 Uhr
Goto Top
Hallo bjoernmadh!

Ganz klar ist mir die Struktur zwar nicht, aber grundsätzlich (und ungetestet) könnte das (für eine "Firma") etwa so gehen:
setlocal
for /d %%i in ("X:\Home\\firmaA\*") do call :ProcessDir "%%i"  
goto :eof

:ProcessDir
set "Name=%~nx1"  
set "Anfang=%Name:~,1%"  
set "Ziel=andere"  
if /i "%Anfang%" geq "a" if /i "%Anfang%" leq "e" set "Ziel=a-e"  
if /i "%Anfang%" geq "f" if /i "%Anfang%" leq "k" set "Ziel=f-k"  
if /i "%Anfang%" geq "l" if /i "%Anfang%" leq "r" set "Ziel=l-r"  
if /i "%Anfang%" geq "s" if /i "%Anfang%" leq "z" set "Ziel=s-z"  

echo Quelle: %1 Ziel: "Z:\Home\%Ziel%\%~nx1"  
goto :eof
Anstelle der Ausgabe in Zeile 14 wäre dann der passende "robocopy"-Befehl zu verwenden ...

Wenn alle "Firmen" nebeneinander liegen, könnten diese mit
for /d %%f in ("X:\Home\*) do for /d %%i in ("X:\Home\%%~nxf\*") do call :ProcessDir "%%i"
als Zeile 2 abgeklappert werden ...

Grüße
bastla
bjoernmadh
bjoernmadh 23.12.2011 um 13:13:17 Uhr
Goto Top
Hallo Bastla.

Vielen Dank.

Klappt super. Habe noch 2 Änderungen gemacht und alles geht nun.

Eine Frohe Weihnacht