waldgeist
Goto Top

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

Content-ID: 53048

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

Ausgedruckt am: 13.11.2024 um 09:11 Uhr

miniversum
miniversum 02.03.2007 um 18:47:23 Uhr
Goto Top
So gehts
set /p i=bitte pfad der zu kopierenden daten angeben:

echo %i% >> path.txt | goto :START

Zwischen i=bitte .. KEINE Leerstelle machen.
vor den %i% >> path.txt | goto :START hat das echo gefehlt.

miniversum
Biber
Biber 02.03.2007 um 19:11:45 Uhr
Goto Top
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.

....
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
Phlegma
Phlegma 03.03.2007 um 12:24:15 Uhr
Goto Top
hi,

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
Waldgeist
Waldgeist 03.03.2007 um 21:44:28 Uhr
Goto Top
Danke schöm

ist n echt geiles forum, wird auch schnell geholfen...

nur leider bin ich heut abend zu besoffen um was anständiges zu schreiben, werde mich aber sonntag oder montag wider melden, schon jetzt einmal denkeschön ^^
Waldgeist
Waldgeist 07.03.2007 um 09:45:21 Uhr
Goto Top
Die log.txt sowie die path.txt sollen immer im gleichen verzeichniss oder am gleichen Ort bzw. dort wo die batch liegt erstellt werden.
Waldgeist
Waldgeist 15.10.2007 um 08:52:41 Uhr
Goto Top
Hallo Zusammen

Da ich nicht einfach n closed anschliessen kann und ich mind. 30 Zeichen schreiben muss sind das diese hier....


--// CLOSED \\--