Kleines Projekt mit batch

Retrogamer

Enthusiast
Thread Starter
Mitglied seit
08.11.2007
Beiträge
6.283
Hallo,

also wir nutzen auf der Arbeit zum Sichern von Userdaten (zB. wegen eines neuen PCs) die Userdaten mit einem batch-Script, welches robocopy einsetzt.

Das ganze läuft so:
1. man definiert mit set /p quelle= einen Quellrechner
2. das Script Listet mit dir \\%quelle%\c$\users alle Userordner auf dem entsprechenden Rechner auf
2. man definiert mit set/p user= von welchem user man die Daten kopieren will ! HIER SOLL VEREINFACHT WERDEN !
3. man definiert mit set /p ziel= den Zielrechner
4. Robocopy mit entsprechenden Parametern macht den Rest

Optimal wäre es, wenn Schritt 2 und 3 so umgeformt werden könnten, dass man nach dem Eingeben der Quelle
direkt via 1. 2. 3. ... auswählen kann vom welchem User man die Daten sichern möchte.

Hat jemand eine Idee oder direkt eine Umsetzung?

Also statt
Datenträger in Laufwerk C: ist Windows Volumeseriennummer: XXXX-XXXX


Verzeichnis von C:\Users


17.11.2015 00:07 <DIR> .
17.11.2015 00:07 <DIR> ..
23.11.2015 22:32 <DIR> User1
29.07.2015 20:02 <DIR> Default.migrated
26.08.2015 17:40 <DIR> User2
29.07.2015 20:00 <DIR> Public
0 Datei(en), 0 Bytes

Wäre es schön dann da in diesem Fall
1. User1
2. Default.migrated
3. User2
4. Public

stehen zu haben und per Nummer bestätigen zu können.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Zuletzt bearbeitet:
Habe es nun so hinbekommen: Danke!

Ich nehme eine For Schleife und lasse den Ordnernamen (eine Zeile)
durchnummerieren. Damit man in der For-Schleife zählen kann ist diese Setlocal EnableDelayedExpansion Funktion wichtig.
Gleichzeitig schreibt die For Schleife den Ordnernamen in ein Array an die Stelle, welche auch der Nummerierung entspricht.
Ausgabe ist dann:
1. Ordner1
2. Ordner2
3. Ordner3
...
Array merkt sich
1: Ordner1
2: Ordner2
3: Ordner3
...
Dann gibt man an, welchen Ordner man kopieren will. Die Variable userziel holt sich dann aus dem Array durch die gewählte Nummer den Ordnernamen.
Also zB. userwahl=2 -> userziel=array stelle 2=Ordner2

echo Verfuegbare Userprofile:
echo.
Setlocal EnableDelayedExpansion
set /A int=1
for /F "tokens=*" %%f in ('dir /b \\%quelle%\c$\users') do (
echo !int!. %%f
set user[!int!]=%%f
set /A int=!int!+1
)
echo -------------------------------------------------------------------
echo Bitte Nummer des zu kopierenden Userprofils angeben.
set/p userwahl=
set userziel=!user[%userwahl%]!
echo Es wurde %userziel% gewaehlt.
echo -------------------------------------------------------------------
echo Bitte Zielrechner in der Form ... oder IP eingeben.
set /p ziel=
echo -------------------------------------------------------------------
set source="\\%quelle%\c$\users\%userziel%"
set target="\\%ziel%\c$\users\%userziel%"
cls
robocopy.exe ...
 
Zuletzt bearbeitet:
Hier mal das fertig Programm wer sich dafür interessiert:

@echo off
Setlocal EnableDelayedExpansion
::Ordnerparameter
set google1=\AppData\Local\Google
set mozilla1=\AppData\Local\Mozilla
set ie1=\Local\Microsoft\Internet Explorer
set ie2=\AppData\LocalLow\Microsoft\Internet Explorer
set mozilla2=\AppData\Roaming\Mozilla
set ie3=\AppData\Roaming\Microsoft\Internet Explorer


:start
COLOR 0A
call :showlogo
echo.
echo Kopiermodus w„hlen:
echo 1. Bowserdaten
echo 2. Userdaten
echo 3. Browser- und Userdaten
echo 4. Info
echo.
echo.
CHOICE /C 1234 /N /M ""
cls
if %errorlevel%==1 goto prog1
if %errorlevel%==2 goto prog2
if %errorlevel%==3 goto prog3
if %errorlevel%==4 goto info


:info
call :showlogo
echo.
echo Das Script kopiert Daten von einem auf einen anderen Rechner.
echo.
echo 1. Nur Browserdaten von Chrome, Firefox und IE aus dem AppData Ordner.
echo.
echo 2. Userdaten: Desktop, Download, Eigene Bilder, Eigene Dokumente,
echo Eigene Musik, Eigene Videos, Favoriten und Links aus dem Userordner.
echo.
echo 3. Alles in 1. und 2. genannte.
echo.
echo "Verbindung: OK" bedeutet, dass das Verzeichnis \C$\Users auf den Rechnern
echo erreichbar ist.
echo.
echo "Profilcheck: OK" bedeutet, dass das Userprofil auf beiden Rechnern mit dem
echo selben Namen vorhanden ist.
echo.
CHOICE /C 1 /N /M "1 = Zur�ck"
cls
if %errorlevel%==1 goto :start


:prog1
call :showlogo
echo.
echo 1. Browserdaten kopieren...
timeout>nul /t 2
cls
set Kopiermodus=1
call :mainframe


:prog2
call :showlogo
echo.
echo 1. Userdaten kopieren...
timeout>nul /t 2
cls
set Kopiermodus=2
call :mainframe


:prog3
call :showlogo
echo.
echo 1. Browser- und Userdaten kopieren...
timeout>nul /t 2
cls
set Kopiermodus=3
call :mainframe


:mainframe
call :showlogo
echo Kopiermodus %Kopiermodus%
echo Quellrechner:
echo Zielrechner:
echo Userprofil:
echo.
call :quelle_definieren
cls
:subframe1
call :showlogo
echo Kopiermodus %Kopiermodus%
echo Quellrechner: %Quellrechner% (Verbindung: OK!)
echo Zielrechner:
echo Userprofil:
echo.
call :ziel_definieren
cls
:subframe2
call :showlogo
echo Kopiermodus %Kopiermodus%
echo Quellrechner: %Quellrechner% (Verbindung: OK!)
echo Zielrechner: %Zielrechner% (Verbindung: OK!)
echo Userprofil:
echo.
call :userquellprofil_definieren
cls
call :showlogo
echo Kopiermodus %Kopiermodus%
echo Quellrechner: %Quellrechner% (Verbindung: OK!)
echo Zielrechner: %Zielrechner% (Verbindung: OK!)
echo Userprofil: %Userquellprofil%
echo.
call :check_userzielprofil
cls
:subframe3
call :showlogo
echo Kopiermodus %Kopiermodus%
echo Quellrechner: %Quellrechner% (Verbindung: OK!)
echo Zielrechner: %Zielrechner% (Verbindung: OK!)
echo Userprofil: %Userquellprofil% (Profilcheck: OK!)
echo.
echo Soll der Kopiervorgang gestartet werden?
echo.
echo 1 = Ja.
echo 2 = Nein, zur�ck zum Hauptmenu.
CHOICE /C 12 /N /M ""
cls
if %errorlevel%==1 goto Kopieren_starten
if %errorlevel%==2 goto start


:mainframe2
cls
call :showlogo
echo Kopiermodus %Kopiermodus%
echo Quellrechner: %Quellrechner% (Verbindung: OK!)
echo Zielrechner: %Zielrechner% (Verbindung: OK!)
echo Userprofil: %Userquellprofil% (Profilcheck: FEHLER!)
echo.
call :userzielprofil_definieren
cls
call :showlogo
echo Kopiermodus %Kopiermodus%
echo Quellrechner: %Quellrechner% (Verbindung: OK!)
echo Zielrechner: %Zielrechner% (Verbindung: OK!)
echo Userprofil: %Userquellprofil% kopieren nach %Userzielprofil%
echo.
echo Soll der Kopiervorgang gestartet werden?
echo.
echo 1 = Ja.
echo 2 = Nein, zur�ck zum Hauptmenu.
CHOICE /C 12 /N /M ""
cls
if %errorlevel%==1 goto Kopieren_starten
if %errorlevel%==2 goto start


:quelle_definieren
echo Bitte Hostname oder IP des Quellrechners angeben.
set /p Quellrechner=
if not exist "\\%Quellrechner%\C\Users\" echo. & echo FEHLER! & echo Freigabe auf %Quellrechner% ist nicht erreichbar... & echo. & echo Taste dr�cken um neue Eingabe zu machen. & pause>nul & cls & goto mainframe
goto :eof


:ziel_definieren
echo Bitte Hostname oder IP des Zielrechners angeben.
set /p Zielrechner=
if not exist "\\%Zielrechner%\C\Users\" echo. & echo FEHLER! & echo Freigabe auf %Zielrechner% ist nicht erreichbar... & echo. & echo Taste dr�cken um neue Eingabe zu machen. & pause>nul & cls & goto subframe1
goto :eof


:userquellprofil_definieren
echo Verf�gbare Userprofile auf dem Quellrechner %Quellrechner%:
echo.
set /A int=1
for /F "tokens=*" %%f in ('dir /b \\%Quellrechner%\c\users') do (
echo !int!. %%f
set Userquellprofile[!int!]=%%f
set /A int=!int!+1
)
echo.
echo Bitte Nummer des zu kopierenden Userprofils angeben:
set/p Userquellprofilwahl=
set Userquellprofil=!Userquellprofile[%Userquellprofilwahl%]!
if x%Userquellprofil%==x echo Die Eingabe war leider ung�ltig. & echo. & echo Taste dr�cken um neue Eingabe zu machen. & pause>nul & cls & goto subframe2
goto: eof


:userzielprofil_definieren
echo Das gew„hlte Userprofil ist auf dem Zielrechner %Zielrechner% nicht verf�gbar.
echo.
echo Verf�gbare Userprofile auf dem Zielrechner %Zielrechner%:
echo.
set /A int=1
for /F "tokens=*" %%f in ('dir /b \\%Zielrechner%\c\users') do (
echo !int!. %%f
set Userzielprofile[!int!]=%%f
set /A int=!int!+1
)
echo.
echo Bitte Nummer des zu Zielprofils angeben:
set/p Userzielprofilwahl=
set Userzielprofil=!Userzielprofile[%Userzielprofilwahl%]!
if x%Userzielprofil%==x echo Die Eingabe war leider ung�ltig. & echo. & echo Taste dr�cken um neue Eingabe zu machen. & pause>nul & cls & goto mainframe2
goto: eof


:check_userzielprofil
if exist "\\%Zielrechner%\C\Users\%Userquellprofil%" set Userzielprofil=%Userquellprofil%& cls & goto subframe3
goto mainframe2


:Kopieren_starten
set source=\\%Quellrechner%\C\users\%Userquellprofil%
set target=\\%Zielrechner%\C\users\%Userzielprofil%
if %Kopiermodus%==1 call :Kopiermodus1
if %Kopiermodus%==2 call :Kopiermodus2
if %Kopiermodus%==3 call :Kopiermodus3
goto :end


:Kopiermodus3
call :Kopiermodus1
call :Kopiermodus2
goto :eof


:Kopiermodus1
robocopy.exe "%source%%google1%" "%target%%google1%" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%%mozilla1%" "%target%%mozilla1%" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%%ie1%" "%target%%ie1%" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%%ie2%" "%target%%ie2%" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%%mozilla2%" "%target%%mozilla2%" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%%ie3%" "%target%%ie3%" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
goto :eof


:Kopiermodus2
robocopy.exe "%source%\Desktop" "%target%\Desktop" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%\Downloads" "%target%\Downloads" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%\Pictures" "%target%\Pictures" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%\Documents" "%target%\Documents" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%\Music" "%target%\Music" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%\Videos" "%target%\Videos" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%\Favorites" "%target%\Favorites" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%\Links" "%target%\Links" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
robocopy.exe "%source%\Searches" "%target%\Searches" /E /SEC /COPYALL /V /MT:20 /TEE /R:1 /W:1
goto :eof


:end
cls
COLOR 0C
call :showmeldung
echo.
echo Kopiermodus %Kopiermodus%
echo Quellrechner: %Quellrechner%
echo Zielrechner: %Zielrechner%
if %Userquellprofil% EQU %Userzielprofil% echo Userprofil: %Userquellprofil%
if %Userquellprofil% NEQ %Userzielprofil% echo Userprofil: %Userquellprofil% wurde kopiert nach %Userzielprofil%
echo.
echo Der Kopiervorgang ist abgeschlossen!
echo.
echo 1 = Zur�ck zum Haupmen�
echo 2 = Exit
CHOICE /C 12 /N /M ""
cls
if %errorlevel%==1 goto start
if %errorlevel%==2 goto veryend


:showlogo
for /f "delims=: tokens=*" %%A in ('findstr /b ::: "%~f0"') do @echo(%%A
goto :eof


:showmeldung
for /f "delims=:' tokens=*" %%A in ('findstr /b ::' "%~f0"') do @echo(%%A
goto :eof


:veryend
endlocal
exit


::LOGO
::: .__ __ .__ .__ __
::: _____ __ __| |_/ |_|__| ______ ___________|__|______/ |_
::: / \| | \ |\ __\ |/ ___// ___\_ __ \ \____ \ __\
:::| Y Y \ | / |_| | | |\___ \\ \___| | \/ | |_> > |
:::|__|_| /____/|____/__| |__/____ >\___ >__| |__| __/|__|
::: \/ \/ \/ |__|


::Meldung
::' _______ _______ ______ _______ ___ _______ __
::'| || || _ | | || | | || |
::'| ___|| ___|| | || |_ _|| | | ___|| |
::'| |___ | |___ | |_||_ | | | | | | __ | |
::'| ___|| ___|| __ | | | | | | || ||__|
::'| | | |___ | | | | | | | | | |_| | __
::'|___| |_______||___| |_| |___| |___| |_______||__|
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh