Eingegebenes in Batch in eine txt schreiben
Batch fordert mich auf etwas ein zugeben. Diese Eingabe möchte nach betätigen von ENTER in eine .txt schreiben lassen, und das nacher wieder aufrufen.
Hallo Leute
Ich würde mir gerne eine etwas ausführlichere backupbatch schreiben.(ja ich weis gibt bessere programme dafuer...) aber ich finde das dies, eine gute aufgabe ist um mich ein bisschen in "batch" ein zu arbeiten.
so nun schonmal mein anfang:
mode 100,60
echo *
echo.
echo backup-batch hauptmenu
echo.
echo *
:START
echo was moechten sie tun?
echo.
echo backup optionen
echo *
echo [1] vollbackup
echo [2] inkrementelles backup
echo [3] differenzielles backup
echo.
echo logfile optionen
echo **
echo [4] logfile ansehen
echo [5] logifle loeschen
echo [6] logfile inhalt loeschen
echo.
echo.
echo [b] beenden
echo.
echo.
set /p choice=Bitte Treffe Deine Auswahl:
if %choice% == 1 goto vollbackup
if %choice% == 2 goto inkrementelles
if %choice% == 3 goto differenzielles
if %choice% == 4 goto logfilea
if %choice% == 5 goto logfilel
if %choice% == 6 goto logfileil
if %choice% == b goto beenden
if not %choice% == 1 goto RESTART
if not %choice% == 2 goto RESTART
if not %choice% == 3 goto RESTART
if not %choice% == 4 goto RESTART
if not %choice% == 5 goto RESTART
if not %choice% == 6 goto RESTART
if not %choice% == b goto RESTART
k
REM ----------------------------------------------------------------------------------------------
REM ------------------------------------------------------------------------------"unterprogramme"
REM ----------------------------------------------------------------------------------------------
:vollbackup
IF exist log.txt echo %date% %time% voll_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
IF exist path.txt echo goto :pfad vorhanden
IF NOT exist path.txt echo neue path.txt erstellt am %date% um %time% > log.txt | echo neue path.txt erstellt | echo erstellt am %date% um %time% > path.txt | goto :pfadneu
set /p i = bitte pfad der zu kopierenden daten angeben:
%i% >> path.txt | goto :START
REM xcopy /e /l /f /h /o /k
goto :START
:inkrementelles
IF exist log.txt echo %date% %time% inkrementelles_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
goto :START
:differenzielles
IF exist log.txt echo %date% %time% differenzielles_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
goto :START
:logfilea
IF exist log.txt echo %date% %time% logfile(log.txt) ansehen gewaehlt >> log.txt | start log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
goto :START
:logfilel
del log.txt
echo.
echo Das logfile(log.txt) wurde erfolgreich geloescht!
echo.
goto :START
:logfileil
REM logifle inhalt loeschen
goto :START
:RESTART
set /p _ok=*Falsche Eingabe! Bitte Treffe Deine Auswahl*
goto START
:beenden
exit
:end
so
das sind die eigentlich relevanten zeilen
F exist path.txt echo goto :pfad vorhanden
IF NOT exist path.txt echo neue path.txt erstellt am %date% um %time% > log.txt | echo neue path.txt erstellt | echo erstellt am %date% um %time% > path.txt | goto :pfadneu
ab genau hier =)
set /p i = bitte pfad der zu kopierenden daten angeben:
%i% >> path.txt | goto :START
Wenn ich das richtig verstehen funktioniert dies etwa gleich wie mein "menu" nur das diesmal die eingabe etwas länger ist, und in eine path.txt geschrieben werden soll.... probiere jetzt schon seit 2 tagen rum und wollte euch fragen ob ihr mir da helfen könntet.
Wen weitere Infos benötigt werde, liefere ich die gerne
mfg
Waldgeist
Hallo Leute
Ich würde mir gerne eine etwas ausführlichere backupbatch schreiben.(ja ich weis gibt bessere programme dafuer...) aber ich finde das dies, eine gute aufgabe ist um mich ein bisschen in "batch" ein zu arbeiten.
so nun schonmal mein anfang:
mode 100,60
echo *
echo.
echo backup-batch hauptmenu
echo.
echo *
:START
echo was moechten sie tun?
echo.
echo backup optionen
echo *
echo [1] vollbackup
echo [2] inkrementelles backup
echo [3] differenzielles backup
echo.
echo logfile optionen
echo **
echo [4] logfile ansehen
echo [5] logifle loeschen
echo [6] logfile inhalt loeschen
echo.
echo.
echo [b] beenden
echo.
echo.
set /p choice=Bitte Treffe Deine Auswahl:
if %choice% == 1 goto vollbackup
if %choice% == 2 goto inkrementelles
if %choice% == 3 goto differenzielles
if %choice% == 4 goto logfilea
if %choice% == 5 goto logfilel
if %choice% == 6 goto logfileil
if %choice% == b goto beenden
if not %choice% == 1 goto RESTART
if not %choice% == 2 goto RESTART
if not %choice% == 3 goto RESTART
if not %choice% == 4 goto RESTART
if not %choice% == 5 goto RESTART
if not %choice% == 6 goto RESTART
if not %choice% == b goto RESTART
k
REM ----------------------------------------------------------------------------------------------
REM ------------------------------------------------------------------------------"unterprogramme"
REM ----------------------------------------------------------------------------------------------
:vollbackup
IF exist log.txt echo %date% %time% voll_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
IF exist path.txt echo goto :pfad vorhanden
IF NOT exist path.txt echo neue path.txt erstellt am %date% um %time% > log.txt | echo neue path.txt erstellt | echo erstellt am %date% um %time% > path.txt | goto :pfadneu
set /p i = bitte pfad der zu kopierenden daten angeben:
%i% >> path.txt | goto :START
REM xcopy /e /l /f /h /o /k
goto :START
:inkrementelles
IF exist log.txt echo %date% %time% inkrementelles_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
goto :START
:differenzielles
IF exist log.txt echo %date% %time% differenzielles_backup gewaehlt >> log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
goto :START
:logfilea
IF exist log.txt echo %date% %time% logfile(log.txt) ansehen gewaehlt >> log.txt | start log.txt
IF NOT exist log.txt echo neues logfile(log.txt) erstellt am %date% um %time% > log.txt | echo da noch kein logfile(log.txt) exisiterte, wurde eines erstellt. | goto :START
goto :START
:logfilel
del log.txt
echo.
echo Das logfile(log.txt) wurde erfolgreich geloescht!
echo.
goto :START
:logfileil
REM logifle inhalt loeschen
goto :START
:RESTART
set /p _ok=*Falsche Eingabe! Bitte Treffe Deine Auswahl*
goto START
:beenden
exit
:end
so
das sind die eigentlich relevanten zeilen
F exist path.txt echo goto :pfad vorhanden
IF NOT exist path.txt echo neue path.txt erstellt am %date% um %time% > log.txt | echo neue path.txt erstellt | echo erstellt am %date% um %time% > path.txt | goto :pfadneu
ab genau hier =)
set /p i = bitte pfad der zu kopierenden daten angeben:
%i% >> path.txt | goto :START
Wenn ich das richtig verstehen funktioniert dies etwa gleich wie mein "menu" nur das diesmal die eingabe etwas länger ist, und in eine path.txt geschrieben werden soll.... probiere jetzt schon seit 2 tagen rum und wollte euch fragen ob ihr mir da helfen könntet.
Wen weitere Infos benötigt werde, liefere ich die gerne
mfg
Waldgeist
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 53048
Url: https://administrator.de/contentid/53048
Ausgedruckt am: 26.11.2024 um 08:11 Uhr
6 Kommentare
Neuester Kommentar
Moin Waldgeist,
willkommen im Forum.
Zumindest noch einen weiteren Denkanstoss mit auf den Weg...
Wie es aussieht, schreibst Du in die path.txt sowohl Log-Informationen wie auch Pfade, die Du vielleicht später nochmal brauchen kannst, d.h. wieder per Batch auslesen willst.
Wenn Du alles mitprotokollieren willst, was der Batch so macht, dann differenziere an dieser Stelle aber schon, ob der Pfad, den der Benutzer eingegeben hat, überhaupt existiert.
Die unsinnigen Eingaben oder Tippfehler, die ja auch im Batch nur wieder zu einem Rücksprung nach :START führen, brauchst du nun wirklich nicht mitschleppen.
...und ich würde diese Datei path.txt immer in ein gleichbleibendes Verzeichnis stellen...
im Moment wird sie immer im zufällig aktuellen erwartet. Beispiel:
Gruss
Biber
willkommen im Forum.
Zumindest noch einen weiteren Denkanstoss mit auf den Weg...
Wie es aussieht, schreibst Du in die path.txt sowohl Log-Informationen wie auch Pfade, die Du vielleicht später nochmal brauchen kannst, d.h. wieder per Batch auslesen willst.
Wenn Du alles mitprotokollieren willst, was der Batch so macht, dann differenziere an dieser Stelle aber schon, ob der Pfad, den der Benutzer eingegeben hat, überhaupt existiert.
Die unsinnigen Eingaben oder Tippfehler, die ja auch im Batch nur wieder zu einem Rücksprung nach :START führen, brauchst du nun wirklich nicht mitschleppen.
....
set /p Quellpfad= bitte pfad der zu kopierenden daten angeben:
IF [%quellpfad%]==[} goto :start
If exist "%Quellpfad%" Echo %Quellpfad% >>path.txt
goto :Start
....
...und ich würde diese Datei path.txt immer in ein gleichbleibendes Verzeichnis stellen...
im Moment wird sie immer im zufällig aktuellen erwartet. Beispiel:
Echo whatever>>d:\mylogs\path.txt
Gruss
Biber
hi,
mir fällt dazu ein:
1. der befehl sollte immer eingegrenzt werden
IF "%variable%"=="kA" goto bla
IF [%variable%]==[kA] goto bla
ansonsten is das ne fehlerquelle weiß grad nichmehr genau was dann passiern kann jedenfalls is es nich gut...
2. der untere teil mit dem if not is unnötig, besonders weil es sowieso nach dem 2ten IF NOT spätestens woanders hinspringt.
ich würde das anders machen:
set /p choice=Bitte Treffe Deine Auswahl:
if "%choice%" == "1" goto vollbackup
if "%choice%" == "2" goto inkrementelles
if "%choice%" == "3" goto differenzielles
if "%choice%" == "4" goto logfilea
if "%choice%" == "5" goto logfilel
if "%choice%" == "6" goto logfileil
if "%choice%" == "b" goto beenden
echo.
echo Fehler 1,2,3,4,5,6 oder b eingeben!
pause
goto restart
viel spaß noch, Ph
mir fällt dazu ein:
set /p choice=Bitte Treffe Deine Auswahl:
if %choice% == 1 goto vollbackup
if %choice% == 2 goto inkrementelles
if %choice% == 3 goto differenzielles
if %choice% == 4 goto logfilea
if %choice% == 5 goto logfilel
if %choice% == 6 goto logfileil
if %choice% == b goto beenden
if not %choice% == 1 goto RESTART
if not %choice% == 2 goto RESTART
if not %choice% == 3 goto RESTART
if not %choice% == 4 goto RESTART
if not %choice% == 5 goto RESTART
if not %choice% == 6 goto RESTART
if not %choice% == b goto RESTART
1. der befehl sollte immer eingegrenzt werden
IF "%variable%"=="kA" goto bla
IF [%variable%]==[kA] goto bla
ansonsten is das ne fehlerquelle weiß grad nichmehr genau was dann passiern kann jedenfalls is es nich gut...
2. der untere teil mit dem if not is unnötig, besonders weil es sowieso nach dem 2ten IF NOT spätestens woanders hinspringt.
ich würde das anders machen:
set /p choice=Bitte Treffe Deine Auswahl:
if "%choice%" == "1" goto vollbackup
if "%choice%" == "2" goto inkrementelles
if "%choice%" == "3" goto differenzielles
if "%choice%" == "4" goto logfilea
if "%choice%" == "5" goto logfilel
if "%choice%" == "6" goto logfileil
if "%choice%" == "b" goto beenden
echo.
echo Fehler 1,2,3,4,5,6 oder b eingeben!
pause
goto restart
viel spaß noch, Ph