#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.. guckt euch einfach mal an, könnt euch ja in etwas vorstellen was ich meine.. auch wenn meine ausdrucksweise etwas kompliziert bzw. bescheuert ist ----------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. + Multi-Zitat Zitieren
#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). + Multi-Zitat Zitieren
#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.. danke nochmals!! + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#7 2. Juni 2005 hab alle dateien angelegt. hm.. es kommt das er alle profile sichert, bzw. stehts dorten.. sichern tut er jedoch nix.. + Multi-Zitat Zitieren
#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) {...] + Multi-Zitat Zitieren