corraggiouno
Goto Top

Batch Skript abbrechen

Hi,

habe folgendes Batch - Script geschrieben:

@echo off
cls
echo.
echo ##################################################################
echo ## ##
echo ## BACKUP ##
echo ## ##
echo ##################################################################
echo.
echo Bitte stellen Sie sicher, dass alle Anwendungen geschlossen sind!!
echo.
echo J = Datensicherung beginnt in wenigen Sekunden
echo N = Datensicherung / Vorgang wird abgebrochen
SET auswahl = SET /p auswahl=
if '%auswahl%' == 'J' GOTO J
if '%auswahl%' == 'N' GOTO N
echo.
:J
echo .................es wird in wenigen Sekunden eine Datensicherung
echo gestartet..............
echo.
ping /n 10 localhost >nul
echo.
echo
echo #########################################
echo Die Datensicherung laeuft.................
echo #########################################
echo.
xcopy "C:\Dokumente und Einstellungen\testuser\Lokale Einstellungen\Anwendungsdaten\Microsoft\Outlook" "E:\daten\outlook_sicherung" /Y
xcopy "C:\lieferanten" "E:\daten\lieferanten" /E /Y
xcopy "C:\Dokumente und Einstellungen\testuser\Eigene Dateien" "E:\daten\Eigene Dateien" /E /Y
echo.
echo.
echo #################################
echo Die Sicherung wurde abgeschlossen
echo #################################
ping /n 8 localhost >nul
echo #########################################
echo Ihr Sytem wird nun heruntergefahren
echo #########################################
shutdown -s -f -t 15
:N


Meine erste Frage: Kann so meine Selektion überhaupt funktionieren?
Kann mir jemand sagen wie ich das Batch-Sricpt abbrechen kann?

Content-Key: 150286

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

Printed on: April 19, 2024 at 10:04 o'clock

Member: awagner82
awagner82 Sep 03, 2010 at 08:48:05 (UTC)
Goto Top
hi,

abbrechen sollte mit "STRG+C" möglich sein.

gruß
Member: Corraggiouno
Corraggiouno Sep 03, 2010 at 08:54:27 (UTC)
Goto Top
jetzt habe ich gerade festgestellt, dass ich überhaupt gar keine Selektion-Option habe; kann mir da jemand noch einen Tipp geben?
Member: Biber
Biber Sep 03, 2010 at 09:06:20 (UTC)
Goto Top
Moin Corraggio1,

ich gebe auch gern mehrere Tipps, auch wenn vielleicht nicht die erwarteten.

Tipp 1) mit Doppelposts verprellst du einige gutwillige Stamm-Poster in den Skriptbereichen.
Du hast doch dieselbe Grütze schon in einem Parallelthread stehen... mit gefühlten 20 Antwortkommentaren. [edit] Real sind es sogar 33! [/edit]
Was soll das also hier?

Tipp 2)

Du bist auch schon im erwähnten Parallelbeitrag auf die erschwerte Lesbarkeit des Codes ohne Codeformatierung angesprochen worden.
Deine Reaktion war

Zitat von @Corraggiouno:
oh sorry, wegen der Formatierung

Ja und weiter? Irgendwelche guten Vorsätze für den Rest des Jahres?

Tipp 3)
Kommentare mit potentiellen Hilfestellungen und Lösungsansätzen wenigstens lesen.

Tipp 4)

Fast alle im Batch verwendbaren Befehle haben auch eine eingebaute Hilfe, so z.B. der Befehl SET mit Eingabe von "Set /?" am CMD-Prompt.

Grüße
Biber
Member: bastla
bastla Sep 03, 2010 at 09:08:54 (UTC)
Goto Top
Hallo Corragiouno!

Wenn Du die Zeilen ab dem korrigierten "SET auswahl = SET /p auswahl=" (bei Verwendung von ""-Formatierung hätte ich jetzt auf die entsprechenden Zeilennummern verwiesen) durch
set /p Auswahl=J/N? 
if /i "%Auswahl%" neq "J" goto :eof  
echo.
ersetzt, sollte das klappen ...

[Edit]
... und ansonsten kann ich nur sehr zur Beachtung der Tipps von Biber raten ...
[/Edit]

Grüße
bastla
Member: Miyamoto
Miyamoto Sep 03, 2010 at 09:13:09 (UTC)
Goto Top
Hi,
benutze bitte beim nächsten mal die Code Formatierung.
Das folgende Skript hat eine switch-case Anweisung, das ist glaube ich das was du willst.

Das skript hat jetzt
@echo off
cls
echo.
echo ##################################################################
echo ## ##
echo ## BACKUP ##
echo ## ##
echo ##################################################################
echo.
echo Bitte stellen Sie sicher, dass alle Anwendungen geschlossen sind!!
echo.
:A
echo J = Datensicherung beginnt in wenigen Sekunden
echo N = Datensicherung / Vorgang wird abgebrochen
SET /p auswahl=
if '%auswahl%' == 'J' GOTO J  
if '%auswahl%' == 'N' GOTO N  
GOTO A
echo.
:J
echo .................es wird in wenigen Sekunden eine Datensicherung
echo gestartet..............
echo.
ping /n 10 localhost >nul
echo.
echo
echo #########################################
echo Die Datensicherung laeuft.................
echo #########################################
echo.
xcopy "C:\Dokumente und Einstellungen\testuser\Lokale Einstellungen\Anwendungsdaten\Microsoft\Outlook" "E:\daten\outlook_sicherung" /Y  
xcopy "C:\lieferanten" "E:\daten\lieferanten" /E /Y  
xcopy "C:\Dokumente und Einstellungen\testuser\Eigene Dateien" "E:\daten\Eigene Dateien" /E /Y  
echo.
echo.
echo #################################
echo Die Sicherung wurde abgeschlossen
echo #################################
ping /n 8 localhost >nul
echo #########################################
echo Ihr Sytem wird nun heruntergefahren
echo #########################################
shutdown -s -f -t 15
:N

Gruß Miyamoto
Member: bastla
bastla Sep 03, 2010 at 09:28:54 (UTC)
Goto Top
@Miyamoto

Das "xcopy" würde ich etwas ergänzen, zB
xcopy "C:\Dokumente und Einstellungen\testuser\Eigene Dateien" "E:\daten\Eigene Dateien\" /DEHKRY
Grüße
bastla
Member: Karo
Karo Sep 03, 2010 at 09:35:31 (UTC)
Goto Top
Hi,

als Ergänzung: Im Reskit von NT git es das kleine Tool CHOICE was man stattdessen auch einsetzen kann ... face-smile

Karo
Member: Miyamoto
Miyamoto Sep 03, 2010 at 09:47:22 (UTC)
Goto Top
@bastla
Ich habe mir den Rest des Skriptes gar nicht angeschaut, nur den Teil wo die Auswahl getroffen wird ^^

Gruß Miyamoto
Member: bankaifan
bankaifan Sep 03, 2010 at 11:45:52 (UTC)
Goto Top
Immer wieder interesant dass es zu jedem noch so kleinen Problem zig lösungen gibt :D
Member: Corraggiouno
Corraggiouno Sep 03, 2010 at 15:13:51 (UTC)
Goto Top
ok, habe mir einfach gedacht das ich die Option mit Abbrechen in einen neuen Post packe; sorry.
Ich bin euch ja dankbar für eure Hilfe, besonders von Biber; dennoch bin ich davon überzeugt dass mehr Solidarität entgegengebracht werden könnte; sonst fällt mir da auch nichts mehr anderes ein: "Also was soll das eigentlich hier"
Member: bastla
bastla Sep 03, 2010 at 16:47:19 (UTC)
Goto Top
Hallo Corragiouno!

Magst Du ein wenig genauer ausführen, in welcher Hinsicht Du einen Mangel an Solidarität ortest und wie der aus Deiner Sicht zu beheben wäre?

Grüße
bastla
Member: Corraggiouno
Corraggiouno Sep 06, 2010 at 06:34:40 (UTC)
Goto Top
guten morgen;

ok; habe mir fest vorgenommen eure Tipps und Ratschläge folge zu leisten:
als aller erstes meine code-formatierung

@echo off
cls
echo.
echo ##################################################################
echo ## 		                                                ##
echo ##                            BACKUP                            ##
echo ##                                                              ##
echo ##################################################################
echo.
echo Bitte stellen Sie sicher, dass alle Anwendungen geschlossen sind!!
echo.
echo J = Datensicherung beginnt in wenigen Sekunden
echo N = Datensicherung / Vorgang wird abgebrochen

SET /p auswahl = Bitte geben Sie (J / N) ein:

if /i '%auswahl%' == 'J' GOTO J  
if /i '%auswahl%' == 'N' GOTO N  

:J
echo Die Sicherung erfolgt in wenigen Sekunden

:N
echo Der Vorgang wird abgebrochen

pause
Meine Frage:
1. Was bedeutet eigentlich der parameter i
2. Die Auswahl funktioniert nun: wenn ich aber J oder N eingebe werden bei Zeilen

Die Sicherung erfolgt in wenigen Sekunden
Der Vorgang wird abgebrochen

ausgegeben; Kann mir da jemand noch einen Tipp geben?
Member: Karo
Karo Sep 06, 2010 at 07:16:05 (UTC)
Goto Top
Moin

1. /i bedeutet, das der String INCASESENSITIVE ausgewertet wird, also egal ob groß oder klein eingegeben.
2.1 SET /p auswahl=Bitte geben Sie (J / N) ein:
2.2 If /i "%auswahl%"=="J" GOTO J
2.3 If /i "%auswahl%"=="N" GOTO N

Karo
Member: BigWim
BigWim Sep 06, 2010 at 07:43:09 (UTC)
Goto Top
Hallo Corragiouno

zu 1)
solche Fragen kannst Du Dir leicht selbst beantworten, indem Du vor jeder Anweisung ein HELP schreibst. In diesem konkreten Fall "help if".
Was in diesen Hilfen nicht steht oder nur ansatzweise - wie ich finde -, ist, auf welche genialen Arten und Weisen man dieses Wissen kombinieren kannst. Das lernst Du hier durch gezielte Fragen.

zu 2)
mußte ich auch schmerzlich lernen. Wenn Du help Set aufrufst und Dir die Beispiele ansiehst, wirst Du feststellen, dass die Zuweisungen ohne Leerstellen zu erfolgen haben. Deshalb mein Tipp: Beim Probieren immer exakt an die Schreibweisen halten und wenn es funktioniert, dann spielen ...

zu der künftigen Frage, warum das bei J immer noch nicht funktioniert
Überlege mal, wie Du Deine Zeilen interpretieren würdest, wenn Du der Rechner wärst:
Zeile 15, Zeile 17, Zeile 20, Zeile 21, und dann?


Wenn trotzt intensiven Nachdenkens nicht drauf kommst (was dann eher mein Level ist), dann mach doch mal das @echo off weg. Dann werden die allermeisten Fehler sichtbar ....


Und zuletzt ein gutgemeinter Rat:
Wenn Du sowas hier zum Besten gibst:
dennoch bin ich davon überzeugt dass mehr Solidarität entgegengebracht werden könnte;
sonst fällt mir da auch nichts mehr anderes ein: "Also was soll das eigentlich hier"

und lässt das Unkommentiert trotz Nachfrage stehen, wirst Du Dir wenig Freunde machen ...

Markus
Member: bankaifan
bankaifan Sep 06, 2010 at 07:51:26 (UTC)
Goto Top
@echo off
:Auswahl 
cls
echo.
echo ##################################################################
echo ## 		                                                ##
echo ##                            BACKUP                            ##
echo ##                                                              ##
echo ##################################################################
echo.
echo Bitte stellen Sie sicher, dass alle Anwendungen geschlossen sind!!
echo.
echo J = Datensicherung beginnt in wenigen Sekunden
echo N = Datensicherung / Vorgang wird abgebrochen

SET /p auswahl = Bitte geben Sie (J / N) ein:

if /i '%auswahl%' == 'J' GOTO J  
if /i '%auswahl%' == 'N' GOTO N  
GOTO :Auswahl

:J
echo Die Sicherung erfolgt in wenigen Sekunden

GOTO :ENDE

:N
echo Der Vorgang wird abgebrochen

GOTO :ENDE

:ENDE
pause

Zur Erklärung:

1. Die Marke "Auswahl" setzte ich, damit, wenn etwas anderes als J oder N eingegeben wird er die Eingabe erneut abfragt.
2. Die "ENDE" Marke setzte ich, damit wenn J gewählt wird nicht auch noch N durchlaufen wird.
Member: Corraggiouno
Corraggiouno Sep 06, 2010 at 08:23:20 (UTC)
Goto Top
dennoch bin ich davon überzeugt dass mehr Solidarität entgegengebracht werden könnte;
sonst fällt mir da auch nichts mehr anderes ein: "Also was soll das eigentlich hier
Ich fand einfach, die Aussage
Ja und weiter? Irgendwelche guten Vorsätze für den Rest des Jahres?
schon etwas schroff war; ich werde in Zukunft eure Ratschläge und Tipps hinsichtlich Formatierung und "Doppelpost's" berücksichtig, versprochen!!
Trotzdem vielen vielen Dank für eure Hilfe
Member: Corraggiouno
Corraggiouno Sep 06, 2010 at 09:10:14 (UTC)
Goto Top
Hey,

@echo off
:auswahl
cls
echo.
echo ##################################################################
echo ## 		                                                ##
echo ##                            BACKUP                            ##
echo ##                                                              ##
echo ##################################################################
echo.
echo Bitte stellen Sie sicher, dass alle Anwendungen geschlossen sind!!
echo.
echo J = Datensicherung beginnt in wenigen Sekunden
echo N = Datensicherung / Vorgang wird abgebrochen
echo.

SET /p auswahl =Bitte geben Sie (J / N) ein:
if /i '%auswahl%' == 'J' GOTO :J  
if /i '%auswahl%' == 'N' GOTO :N  
goto :auswahl

:J
echo Die Sicherung erfolgt in wenigen Sekunden
goto :ende

:N
echo Der Vorgang wird abgebrochen
goto :ende

:ende
pause
egal welchen buchstaben ich eingebe; es wird immer erneut nach der Eingabe gefragt; bzw. lasse ich die option
goto :auswahl

wegfallen, wird bei
J und N
Die Sicherung erfolgt in wenigen Sekunden
ausgegeben;
Member: BigWim
BigWim Sep 06, 2010 at 09:37:18 (UTC)
Goto Top
Hallo Corragiouno,

wenn Du das Echo off weggelassen hättest (und in diesem Fall auch das cls), dann hättest Du erkannt, dass die Zuweisung mittels Set /p ... (Zeile 17) immer noch nicht funktioniert.

Ich kann mich nur wiederholen, weil ich oft genug (und wohl noch nicht genug) in die Falle getappt bin.

Markus

SET /p auswahl=Bitte geben Sie (J / N) ein:


PS: Hätte gern eine Hardcopy angefügt, aber auf die schnelle nicht gefunden, wie das geht .....
Member: Corraggiouno
Corraggiouno Sep 06, 2010 at 09:48:40 (UTC)
Goto Top
oooh, mist das Leerzeichen; vielen Dank!
Member: BigWim
BigWim Sep 06, 2010 at 09:59:17 (UTC)
Goto Top
Hört sich so an, als wäre diese Anfrage gelöst, oder?


Markus
Member: Karo
Karo Sep 06, 2010 at 11:02:32 (UTC)
Goto Top
Hättest Du die Sachen genau durchgelesen, so hättest Du den Hinweis schon weiter oben von mir gesehen ....

Karo

PS: Auch ich denke die Sache kann als gelöst gesetzt werden.