batch datei zum profile sichern

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von crazydog, 1. Juni 2005 .

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 1. Juni 2005
    hi, hab mir da mal eine batch datei geschrieben.
    weiß jedoch ned wie ich dem "Benutzer" eine benutzereingabe (wert) zuweisen kann.. sowas wie bei c++ cin ...

    will mir da ein menü machen, damit ich zur auswahl habe. alles sichern od. zb. ne auflistung aller profile u. dann durch eingabe auswählen .. od. so ähnlich.. :D

    guckt euch einfach mal an, könnt euch ja in etwas vorstellen was ich meine.. auch wenn meine ausdrucksweise etwas kompliziert bzw. bescheuert ist :D

    ----------ANFANG------------------

    set Benutzer="testbenutzer"
    set Quelle1="C:\Dokumente und Einstellungen\%Benutzer%\Eigene Dateien"
    set Quelle2="C:\Dokumente und Einstellungen\%Benutzer%\Desktop"
    set Quelle3="C:\Dokumente und Einstellungen\%Benutzer%\Favoriten"
    set Ziel1="c:\swg\%date%\Eigene Dateien"
    set Ziel2="c:\swg\%date%\Desktop"
    set Ziel3="c:\swg\%date%\Favoriten"
    set templog="%temp%\temp.log"
    @echo . >>%windir%\backup.log
    @echo Starte Backup: %date% %time% von %Quelle1% nach %Ziel% >>%windir%\backup.log
    %date% %time% von %Quelle2% nach %Ziel% >>%windir%\backup.log
    %date% %time% von %Quelle3% nach %Ziel% >>%windir%\backup.log
    md %Ziel1%
    md %Ziel2%
    md %Ziel3%
    xcopy %Quelle1% %Ziel1% /s /v /c /i /f /h /k /o /x /y >>%windir%\backup.log
    xcopy %Quelle2% %Ziel2% /s /v /c /i /f /h /k /o /x /y >>%windir%\backup.log
    xcopy %Quelle3% %Ziel3% /s /v /c /i /f /h /k /o /x /y >>%windir%\backup.log
    @echo Starte Überpruefung >>%windir%\backup.log
    start /w windiff.exe -Sdx %templog% -T %Ziel1% %quelle1%
    find "different" %templog% >>%windir%\backup.log
    start /w windiff.exe -Sdx %templog% -T %Ziel2% %quelle2%
    find "different" %templog% >>%windir%\backup.log
    start /w windiff.exe -Sdx %templog% -T %Ziel3% %quelle3%
    find "different" %templog% >>%windir%\backup.log
    @echo Fertig >>%windir%\backup.log
    start notepad.exe %windir%\backup.log

    ---------------ENDE------------------------

    Gruß

    CrazyD.
     

  2. Anzeige
  3. #2 1. Juni 2005
    Das hier sollte weiterhelfen (ungetestet und mal eben hier hingekrickelt, aber sollte funzen):

    Code:
    @echo off
    
    :loop
     REM wenn Eingabe nicht j oder n: Endlosschleife
     set /p blubb=Wirklich (j/n)?: 
     if %blubb%==j goto ja
     if %blubb%==n goto nein
     echo Ungültige Eingabe, bitte wiederholen
    goto loop
    
    :ja
     echo Ok, dann mal los
     goto end
    
    :nein
     echo Na gut, dann halt nicht
     goto end
    
    :end
    Das, was du also wolltest, ist /set p. Angehängt der Variablenname, dann nach dem Gleichheitszeichen die Eingabeaufforderung (optional).

    Du könntest es z.B. so machen:
    Code:
    @echo off
    echo.
    echo Verfuegbare Profile:
    echo --------------------
    dir /b "C:\Dokumente und Einstellungen"
    echo --------------------
    echo.
    
    :loop
     echo Welches Profil soll benutzt werden?
     set /p profil=Eingabe: 
     if not exist "C:\Dokumente und Einstellungen\%profil%" goto not_found
     echo Gewaehltes Profil: C:\Dokumente und Einstellungen\%profil%
     :auswahl
     set /p auswahl=Auswahl: (S)icherung (L)oeschen (N)ix - 
     if %auswahl%==s goto sicherung
     if %auswahl%==l goto loeschen
     if %auswahl%==n goto end
     echo Ungueltige Eingabe, wiederholen
     goto auswahl
     goto end
    goto loop
    
    :not_found
     echo Ungueltiges Profil, bitte wiederholen
     goto loop
     
    :sicherung
     echo Jetzt wird das Profil "%profil%" gesichert
     goto end
    
    :loeschen
     echo Profil "%profil%" wird geloescht...
     goto end
    
    :end
    Kleine Anmerkung: set /p funktioniert soweit ich weiss nur in WinNT-basierten Systemen, bis Win98 benutzte man den Befehl choice (den es nun allerdings nicht mehr gibt).
     
  4. #3 1. Juni 2005
    fettes fettes dankeschön!
    echt geile sache!

    hab das jetzt folgendermaßen angepasst.

    @echo off
    echo.
    echo Verfuegbare Profile:
    echo --------------------
    dir /b "C:\Dokumente und Einstellungen"
    echo --------------------
    echo.

    :loop
    echo Welches Profil soll gesichert werden?
    set /p profil=Eingabe:
    if not exist "C:\Dokumente und Einstellungen\%profil%" goto not_found
    echo Gewaehltes Profil: C:\Dokumente und Einstellungen\%profil%
    :auswahl
    set /p auswahl=Auswahl: (S)icherung (L)oeschen (N)ix -
    if %auswahl%==s goto sicherung
    if %auswahl%==l goto loeschen
    if %auswahl%==n goto end
    echo Ungueltige Eingabe, wiederholen
    goto auswahl
    goto end
    goto loop

    :not_found
    echo Ungueltiges Profil, bitte wiederholen
    goto loop

    :sicherung

    echo Jetzt wird das Profil "%profil%" gesichert
    set Quelle1="C:\Dokumente und Einstellungen\%profil%\Eigene Dateien"
    set Quelle2="C:\Dokumente und Einstellungen\%profil%\Desktop"
    set Quelle3="C:\Dokumente und Einstellungen\%profil%\Favoriten"
    set Ziel1="c:\swg\%profil%\%date%\Eigene Dateien"
    set Ziel2="c:\swg\%profil%\%date%\Desktop"
    set Ziel3="c:\swg\%profil%\%date%\Favoriten"
    set templog="%temp%\temp.log"
    @echo . >>%windir%\backup.log
    @echo Starte Backup: %date% %time% von %Quelle1% nach %Ziel% >>%windir%\backup.log
    %date% %time% von %Quelle2% nach %Ziel% >>%windir%\backup.log
    %date% %time% von %Quelle3% nach %Ziel% >>%windir%\backup.log
    md %Ziel1%
    md %Ziel2%
    md %Ziel3%
    xcopy %Quelle1% %Ziel1% /s /v /c /i /f /h /k /o /x /y >>%windir%\backup.log
    xcopy %Quelle2% %Ziel2% /s /v /c /i /f /h /k /o /x /y >>%windir%\backup.log
    xcopy %Quelle3% %Ziel3% /s /v /c /i /f /h /k /o /x /y >>%windir%\backup.log
    @echo Starte Überpruefung >>%windir%\backup.log
    start /w windiff.exe -Sdx %templog% -T %Ziel1% %quelle1%
    find "different" %templog% >>%windir%\backup.log
    start /w windiff.exe -Sdx %templog% -T %Ziel2% %quelle2%
    find "different" %templog% >>%windir%\backup.log
    start /w windiff.exe -Sdx %templog% -T %Ziel3% %quelle3%
    find "different" %templog% >>%windir%\backup.log
    @echo Fertig >>%windir%\backup.log
    start notepad.exe %windir%\backup.log

    goto end

    :loeschen
    echo Profil "%profil%" wird geloescht...
    del %profil%
    echo Profil "%profil% wurde erfolgreich gelöscht..
    goto end

    :end

    meine letzte frage, wie kann ich noch im menü die auswahl .. alles sicher hinzufügen. dann wärs perfekt ! :)
    die löschfunktion wär auch ned schlecht.. :D

    danke nochmals!!
     
  5. #4 1. Juni 2005
    Kann mal bitte jmd. das Posting löschen? Blöde Kiddies... 8o

    Option "Alles sichern": das kriegste schon allein hin ;) Hab dir ja die Ausgabe vorgemacht, da trägste halt nur noch deine zusätzliche Option ein, wie's dir gerade passt. Und dann halt noch 'ne Abfrage drunter "if %auswahl%==a goto alles_sichern" oder sowas in der Art.

    Löschen: hast es ja eigentlich schon drin - würde nur eher deltree benutzen. Da gibt's 'ne Rückfrage, die man drinlassen sollte - müsste ansonsten nochmal die Syntax raussuchen bzw. testen, um das sofort mit "j" zu bestätigen.

    Alles sichern: meinst du damit ohne manuelle Angabe der Profile? Wenn ja: könnte mit 'ner Schleife machbar sein. Ich probier mal eben ein wenig rum.

    //edit
    So, hab was gebastelt. Du brauchst 3 verschiedene Dateien, weil sonst der Schleifen-Durchlauf für "alle löschen" bzw. "alle sichern" nicht funktioniert.

    main.bat
    Code:
    @echo off
    
    echo.
    echo Verfuegbare Profile:
    echo --------------------
    dir /b "C:\Dokumente und Einstellungen\*."
    echo --------------------
    echo.
    
    :auswahl
     echo Hauptmenue
     echo (A) Einzelnes Profil sichern
     echo (B) Einzelnes Profil loeschen
     echo (C) Alle Profile loeschen
     echo (D) Alle Profile sichern
     echo (E) Ende
     set /p auswahl=Ihre Eingabe: 
     if %auswahl%==a goto sicherung
     if %auswahl%==b goto loeschen
     if %auswahl%==c goto alle_loeschen
     if %auswahl%==d goto alle_sichern
     if %auswahl%==e goto end
     echo Ungueltige Eingabe, wiederholen
     goto auswahl
    goto end
    
    :sicherung
     set /p profil=Welches Profil soll gesichert werden? 
     if not exist "C:\Dokumente und Einstellungen\%profil%" goto not_found
     echo Gewaehltes Profil: C:\Dokumente und Einstellungen\%profil%
     echo Jetzt wird das Profil "%profil%" gesichert
     REM **************************************
     REM * Hier deine Sicherungs-Befehle rein *
     REM **************************************
     goto end
    
    :loeschen
     set /p profil=Welches Profil soll geloescht werden? 
     if not exist "C:\Dokumente und Einstellungen\%profil%" goto not_found
     echo Gewaehltes Profil: C:\Dokumente und Einstellungen\%profil%
     echo Profil "%profil%" wird geloescht...
     REM **********************************
     REM * Hier deine Loesch-Befehle rein *
     REM **********************************
     goto end
     
    :alle_loeschen
     echo Alle Profile werden geloescht. Wirklich sicher (j/n)?
     set /p rueckfrage=
     if %rueckfrage%==j goto wirklich_loeschen
     if %rueckfrage%==n goto end
     echo Ungueltige Eingabe, bitte wiederholen.
     goto alle_loeschen
     
     :wirklich_loeschen
     call schleife.bat loeschen
     goto end
    
    :alle_sichern
     call schleife.bat sichern
     goto end
    
    :not_found
     echo Ungueltiges Profil, bitte wiederholen
     goto loop
    
    :end
    schleife.bat
    Code:
    @echo off
    for /d %%p in ("C:\Dokumente und Einstellungen\*.") do call aktion.bat %1 "%%p"
     
    aktion.bat
    Code:
    @echo off
    if %1==loeschen goto loeschen
    if %1==sichern goto sichern
    
    :loeschen
     echo Folgendes Profil wird geloescht: %2
     goto end
     
    :sichern
     echo Folgendes Profil wird gesichert: %2
     goto end
     
    :end
    
    Musst halt nur überall noch deine Befehle einbauen, hab da jetzt nur die eigentliche Menüstruktur drin.
     
  6. #5 2. Juni 2005
    super, werde ich gleich mal zusammenbauen das ganze.
    big thx!!

    kopiere den code dann wieder hier her, könnt ja sein das noch jemand intresse dafür hat.

    hab jetzt so, aber alles sichern funktioniert nicht.. :(

    @echo off

    echo.
    echo Verfuegbare Profile:
    echo --------------------
    dir /b "C:\Dokumente und Einstellungen\*."
    echo --------------------
    echo.

    :auswahl
    echo Hauptmenue
    echo (A) Einzelnes Profil sichern
    echo (B) Einzelnes Profil loeschen
    echo (C) Alle Profile loeschen
    echo (D) Alle Profile sichern
    echo (E) Ende
    set /p auswahl=Ihre Eingabe:
    if %auswahl%==a goto sicherung
    if %auswahl%==b goto loeschen
    if %auswahl%==c goto alle_loeschen
    if %auswahl%==d goto alle_sichern
    if %auswahl%==e goto end
    echo Ungueltige Eingabe, wiederholen
    goto auswahl
    goto end

    :sicherung
    set /p profil=Welches Profil soll gesichert werden?
    if not exist "C:\Dokumente und Einstellungen\%profil%" goto not_found
    echo Gewaehltes Profil: C:\Dokumente und Einstellungen\%profil%
    echo Jetzt wird das Profil "%profil%" gesichert
    set Quelle1="C:\Dokumente und Einstellungen\%profil%\Eigene Dateien"
    set Quelle2="C:\Dokumente und Einstellungen\%profil%\Desktop"
    set Quelle3="C:\Dokumente und Einstellungen\%profil%\Favoriten"
    set Ziel1="c:\swg\%profil%\%date%\Eigene Dateien"
    set Ziel2="c:\swg\%profil%\%date%\Desktop"
    set Ziel3="c:\swg\%profil%\%date%\Favoriten"
    set templog="%temp%\temp.log"
    @echo . >>%windir%\backup.log
    @echo Starte Backup: %date% %time% von %Quelle1% nach %Ziel% >>%windir%\backup.log
    %date% %time% von %Quelle2% nach %Ziel% >>%windir%\backup.log
    %date% %time% von %Quelle3% nach %Ziel% >>%windir%\backup.log
    md %Ziel1%
    md %Ziel2%
    md %Ziel3%
    xcopy %Quelle1% %Ziel1% /s /v /c /i /f /h /k /o /x /y >>%windir%\backup.log
    xcopy %Quelle2% %Ziel2% /s /v /c /i /f /h /k /o /x /y >>%windir%\backup.log
    xcopy %Quelle3% %Ziel3% /s /v /c /i /f /h /k /o /x /y >>%windir%\backup.log
    @echo Starte Überpruefung >>%windir%\backup.log
    start /w windiff.exe -Sdx %templog% -T %Ziel1% %quelle1%
    find "different" %templog% >>%windir%\backup.log
    start /w windiff.exe -Sdx %templog% -T %Ziel2% %quelle2%
    find "different" %templog% >>%windir%\backup.log
    start /w windiff.exe -Sdx %templog% -T %Ziel3% %quelle3%
    find "different" %templog% >>%windir%\backup.log
    @echo Fertig >>%windir%\backup.log
    start notepad.exe %windir%\backup.log
    goto end

    :loeschen
    set /p profil=Welches Profil soll geloescht werden?
    if not exist "C:\Dokumente und Einstellungen\%profil%" goto not_found
    echo Gewaehltes Profil: C:\Dokumente und Einstellungen\%profil%
    echo Profil "%profil%" wird geloescht...
    deltree %profil%
    echo Profil "%profil% wurde erfolgreich gelöscht...
    goto end
    goto end

    :alle_loeschen
    echo Alle Profile werden geloescht. Wirklich sicher (j/n)?
    set /p rueckfrage=
    if %rueckfrage%==j goto wirklich_loeschen
    if %rueckfrage%==n goto end
    echo Ungueltige Eingabe, bitte wiederholen.
    goto alle_loeschen

    :wirklich_loeschen
    call schleife.bat loeschen
    goto end

    :alle_sichern
    call schleife.bat sichern
    goto end

    :not_found
    echo Ungueltiges Profil, bitte wiederholen
    goto loop

    :end
     
  7. #6 2. Juni 2005
    Hast du die anderen beiden BAT-Dateien (aktion.bat und schleife.bat) auch wirklich angelegt? Was für 'ne Fehlermeldung kommt denn da genau?
     
  8. #7 2. Juni 2005
    hab alle dateien angelegt. hm.. es kommt das er alle profile sichert, bzw. stehts dorten.. sichern tut er jedoch nix..
     
  9. #8 2. Juni 2005
    Wie gesagt, du musst natürlich die aktion.bat auch mit den jeweiligen Befehlen füttern, die sichern ;)

    Und gewöhn dir bitte den CODE-Tag an, ist für Lesbarkeit besser. Ansonsten kann dir irgendwann mal sowas passieren:

    void MAX(int zahl1, int zahl2) { ... }

    soll heissen:
    Code:
    void MAX(int zahl1, int zahl2) {...]
     

  10. Videos zum Thema
Die Seite wird geladen...