Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Aufrufende Batchdatei wird trotz CALL-Befehl beendet

Mitglied: imebro

imebro (Level 2) - Jetzt verbinden

21.05.2020 um 18:55 Uhr, 455 Aufrufe, 15 Kommentare

Hallo,

ich stricke gerade an einer kleinen Batchdatei, die ein Auswahlmenü darstellt zur Auswahl verschiedener Backup-Dateien.
Rufe ich jetzt z.B. die Datei mit der Nummer [5] auf, startet zwar die entsprechende Batch, aber nach der Abarbeitung dieser Batchdatei ist auch die aufrufende Datei (also die mit dem Auswahlmenü) beendet.

Vom Code her sollte das meiner Meinung nach aber anders sein...

Hier der Code meiner Auswahlmenü-Batch:

Danke und Gruß,
imebro
Mitglied: Xerebus
21.05.2020 um 19:04 Uhr
Wo sollte die dann sonst sein?
Dann ersetze doch goto end mit goto start und füge oben ein :start ein.
Bitte warten ..
Mitglied: imebro
21.05.2020 um 19:59 Uhr
Danke Dir für Deine Antwort.

Ich hatte die Info, dass der Call-Befehl eine andere Batch aufruft, diese komplett abarbeitet und dann wieder zur ursprünglichen Batch zurückkehrt (also zu der aufrufenden Batch).

Dann müßte doch eigentlich - nachdem die Bckup-Batch abgearbeitet ist - die Menü-Batch wieder im Vordergrund stehen, damit man ggf. die nächste Nummer aufrufen kann.

Unten ist ja auch eine "pause" eingetragen, sodass die Menü-Batch auf jeden Fall offen bleiben sollte.
Oder habe ich da was falsch verstanden?

Gruß,
imebro
Bitte warten ..
Mitglied: Pjordorf
21.05.2020 um 20:24 Uhr
Hallo,

Zitat von imebro:
Vom Code her sollte das meiner Meinung nach aber anders sein...
Warum soll dein Batch was anderes zun als dort steht? KI etwa?

Ich hatte die Info, dass der Call-Befehl eine andere Batch aufruft, diese komplett abarbeitet und dann wieder zur ursprünglichen Batch zurückkehrt (also zu der aufrufenden Batch).
Tut sie ja auch.

Dann müßte doch eigentlich - nachdem die Bckup-Batch abgearbeitet ist - die Menü-Batch wieder im Vordergrund stehen, damit man ggf. die nächste Nummer aufrufen kann.
Ist ja auch so, wenn du die Batch nicht beendet hast. Aber warum soll die wieder vorne anfangen und alles wieder neu mach? Hast vdu doch gar nicht gesagt. Batch kam mit den Rechner lange bevor es Windows und Grafische Elemente gab. Geh mal in einer grösseren Bücherei und such dir die Hanbücher zu Batch raus und lerne.

Unten ist ja auch eine "pause" eingetragen, sodass die Menü-Batch auf jeden Fall offen bleiben sollte.
Passiert ja auch nur das jetzt noch dort steht "Bitte eine Taste drücken"...

Gruß,
Peter
Bitte warten ..
Mitglied: Lochkartenstanzer
21.05.2020, aktualisiert um 21:04 Uhr
Moin,

https://administrator.de/wissen/tutorial-for-schleife-155681.html
https://administrator.de/wissen/windows-batch-grundlagen-165781.html
https://administrator.de/wissen/rechnen-batch-125284.html

u.s.w.

Wenn siech das ganze nciht so verhält wie Du denkst, hast Du offensichtich etwas falsch erwartet.

Dein Skript macht aber ganz genau das was Du hingeschrieben hast. Es ruft Test auf und springt zum Ende und beendet sich dann. Wenn Du willst, daß es wieder von vorne losläuft, mußt Du wieder an den Anfang springen lassen, d.h. einen Sprunziel "START" defineiren" und mit goto dorthin springen.

lks
Bitte warten ..
Mitglied: imebro
22.05.2020, aktualisiert um 15:57 Uhr
Hmmm... verstehe ich nicht.

OK, der Hinweis auf "von vorne anfangen" war verwirrend und nicht korrekt.
Ich zeige es nochmal an einer ganz einfachen Batchdatei:

Hier wird kopiert und direkt danach erscheint im CMD-Fenster die Meldung "Sicherung beendet!" sowie darunter der Hinweis "drücken Sie eine beliebige Taste...".

Letzteres wird ja durch den Eintrag "pause" in der Batch verursacht. Richtig so?

Nun hatte ich folgendes angenommen (und das ist für mich auch jetzt noch logisch):
- ich rufe innerhalb der obigen Batch (Batch 1) nun eine weitere Batch per Call-Befehl auf (nennen wir sie Batch 2).
- nachdem Batch 2 nun in einem neuen CMD-Fenster geöffnet und danach abgearbeitet wurde, schließt sich Batch 2 (per "EOF").
- und nun ist im Hintergrund immer noch das CMD-Fenster mit Batch 1 offen, da dieses ja mit dem Eintrag "pause" endet. Es müßte also in diesem CMD-Fenster noch der Hinweis "drücken Sie eine beliebige Taste..." stehen. Oder bin ich jetzt vollkommen daneben?

Gruß,
imebro
Bitte warten ..
Mitglied: Pjordorf
22.05.2020 um 17:45 Uhr
Hallo,

Zitat von imebro:
Hmmm... verstehe ich nicht.
Batch ist schon 40 Jahre alt und ar älter.

OK, der Hinweis auf "von vorne anfangen" war verwirrend und nicht korrekt.
Doch. 100% richtig,

Hier wird kopiert und direkt danach erscheint im CMD-Fenster die Meldung "Sicherung beendet!" sowie darunter der Hinweis "drücken Sie eine beliebige Taste...".
WEIL das eben das letzte ist was deine Batch tun soll. Und ein Pause /? in ein CMD Fenster zeigt dir gar was Pause alles kann bzw. tut. Und auch die Lektüre zu Pause alleine füllt ganze Bücher (damals noch in Papierform)

Letzteres wird ja durch den Eintrag "pause" in der Batch verursacht. Richtig so?
Da das deine letzte Anweisung war und Pause eben ein "drücken Sie eine beliebige Taste..." erzeugt, Ja.

Nun hatte ich folgendes angenommen (und das ist für mich auch jetzt noch logisch):
Annehmen kannst du vieles. Aber ob dein Anweisung das so tut ist immer wieder mal auch anders. Und logisch muss es nur für den Programmierer von Pause sein (Der Ist aber jetzt wohl schon in Rente) MShat nie behauptet etwas zu tun was für den Anwender logisch sein muss. Und dann müsste erst noch diese Logik festgeschrieben werden. Du weißt doch für was MS-DOS steht? MicroSoft Disk Operating System - also nichts mit KI oder Logik.


- und nun ist im Hintergrund immer noch das CMD-Fenster mit Batch 1 offen, da dieses ja mit dem Eintrag "pause" endet. Es müßte also in diesem CMD-Fenster noch der Hinweis "drücken Sie eine beliebige Taste..." stehen. Oder bin ich jetzt vollkommen daneben?
Ja, wenn du es festgeschrieben hast. Übrigens in deiner Beispiel Batch ist Zeile 9 mit goto END so überflüssig wie Essen gehen nach einen üppigen Gala Dinner.Deine Batch geht doch ganz alleine nach :END. Und es war nie gut und es ist immer noch nicht gut Sprungmarken zu benennen wie interne Kommandos
Und bedenke das dein Monitor eine separate Darstellungseinheit bildet die von deinerr Batch vollkommen losgelöst operiert (Nicht wie ein Blutdruckmessgerät oder Smartphone)

Gruß,
Peter
Bitte warten ..
Mitglied: imebro
22.05.2020, aktualisiert um 19:45 Uhr
Das ist ja alles sehr schön, was Du schreibst.

Aber erkläre mir doch bitte mal, wieso - nachdem Batch 2 abgeschlossen ist - es nicht mehr bei Batch 1 weitergeht?

Hier mal 2 neue und ganz einfach Beispiele:

Batch1
Batch2
So... Batch1 ruft also Batch2 auf, wodurch sich ein zusätzliches Konsolenfenster öffnet (oder nicht?). Nachdem Batch2 dann abgearbeitet ist, schließt sich deren Fenster automatisch (da :EOF).

Und dann hätte ich gedacht, dass ich dann wieder automatisch in Batch1 lande, wo dann im Konsolenfenster dort steht "Sicherung beendet!" und direkt darunter "drücken Sie eine beliebige Taste...".

Aber das ist so nicht, wie ja schon mehrfach beschrieben.
Warum?

Gruß,
imebro
Bitte warten ..
Mitglied: Lochkartenstanzer
LÖSUNG 22.05.2020, aktualisiert um 19:55 Uhr
Zitat von imebro:

Batch2

Da gehört ein EXIT /B ans Ende. Sonst wird die CMD beendet statt wieder zum ersten Skript zu springen.

lks
Bitte warten ..
Mitglied: Pjordorf
LÖSUNG 22.05.2020 um 21:02 Uhr
Hallo,

Zitat von imebro:
So... Batch1 ruft also Batch2 auf, wodurch sich ein zusätzliches Konsolenfenster öffnet (oder nicht?). Nachdem Batch2 dann abgearbeitet ist, schließt sich deren Fenster automatisch (da :EOF).
Schau mal https://docs.microsoft.com/de-de/windows-server/administration/windows-c ... und https://docs.microsoft.com/de-de/windows-server/administration/windows-c ...

Und dann hätte ich gedacht, dass ich dann wieder automatisch in Batch1 lande, wo dann im Konsolenfenster dort steht "Sicherung beendet!" und direkt darunter "drücken Sie eine beliebige Taste...".

Aber das ist so nicht, wie ja schon mehrfach beschrieben.
Warum?
Es tut was du ihm sagst. Und wenn nicht hast etwas nicht gesagt/ falsch gesagt.

Gruß,
Peter
Bitte warten ..
Mitglied: imebro
22.05.2020 um 21:56 Uhr
Ich habe es jetzt wie folgt gelöst und das funktioniert auch:

Batch1
Batch2
Wenn Batch2 per "exit /b" beendet ist, springt sie sofort zu Batch1 zu "START", leert dann das Fenster (cls) und dann habe ich wieder das Menü vor mir, wo ich eine Auswahl treffen kann (habe in der Batch jetzt den ganzen Code bezügl. Auswahl weggelassen).

Funktioniert also so. Aber dennoch befinde ich mich immer in einem Fenster. Aber vielleicht soll das ja so sein und ich hatte einfach nur falsch angenommen, dass 2 Fenster entstehen durch den Call-Befehl.

Gruß,
imebro
Bitte warten ..
Mitglied: Lochkartenstanzer
22.05.2020, aktualisiert um 22:01 Uhr
Zitat von imebro:

Funktioniert also so.

Dann fehlt nur noch https://administrator.de/faq/32

Aber dennoch befinde ich mich immer in einem Fenster. Aber vielleicht soll das ja so sein und ich hatte einfach nur falsch angenommen, dass 2 Fenster entstehen durch den Call-Befehl.

Du bist einfach von falschen Annahmen ausgegangen. Ein Grundsatz gilt bei Programmen und Skripten immer:

Das Programm/Skript macht nicht das, was Du denkst, sondern das, was Du hingeschrieben hast!

lks
Bitte warten ..
Mitglied: WinCobold
23.05.2020 um 13:08 Uhr
Hallo imebro,

auch wenn du die Frage schon als gelöst markiert hast, möchte ich doch noch ein paar Bemerkungen loswerden.

Erst einmal: wie kommst du auf die Idee, dass ein CALL ein neues Fenster öffnen sollte? Batch weiß von Fenstern nichts, und dass es jetzt nicht mehr Teil von DOS ist, sondern unter CMD läuft, ändert daran nichts.

Dann habe ich mal deine "2 neue und ganz einfach Beispiele" von gestern Abend ausprobiert, allerdings den ROBOCOPY durch ein einfaches ECHO ersetzt. Und es funktioniert exakt wie erwartet: Erst die Anzeige aus der batch1, dann die aus der batch2, dann der Hinweis "Sicherung beendet!", dann der Pause-Befehl. Dabei ist es natürlich egal, ob ich die Batch per Doppelklick ausführe oder aus dem CMD-Fenster. Und auch ein EXIT /B in der batch2 ist dazu nicht nötig.

Hardcopies deiner Versuche hast du ja leider keine gezeigt, daraus hätte man vielleicht etwas schließen können. Vielleicht hast du die erste Batch geschlossen, aber gedacht, dass es sich um das "zweite Fenster" handelt?

Und da du in deinem funktionierenden Script ja (außer dem nicht benötigten EXIT /B) nur den GOTO ergänzt hast, gehe ich davon aus, dass es auch schon vorher geklappt hat.

Ach ja, ich habe mir angewöhnt, generell in einer Zeile nicht mehrere Befehle einzugeben. Das macht die Batch übersichtlicher und macht es auch leichter, einzelne Zeilen auszukommentieren. Und ich wüsste auch nicht, was der SETLOCAL hier Sinnvolles bewirken könnte.

Gruß vom
WinCobold
Bitte warten ..
Mitglied: imebro
23.05.2020 um 19:36 Uhr
Danke Dir für Deine Tipps.

Das mit dem "Exit /b" hatte ich nur gemacht, da mir das weiter oben ja von 2 Usern empfohlen wurde.
Am Ende ist es ja wahrscheinlich auch egal. Die Batch funktioniert ja so und daher ist es ja ok.
Oder denkst Du es wäre korrekter (besser), das "Exit /b" durch ein "EOF" oder "goto :EOF" etc. zu ersetzen?

Mit den Fenstern ist tatsächlich so.
Ich hatte einfach nur angenommen, dass sich ein 2. Fenster öffnen würde nach Call. War einfach nur für mich logisch

Mit dem Setlocal am Anfang das hatte ich einfach aus meiner Batchvorlage übernommen und es nicht abgeändert. Sollte ich das durch ein normales "@ echo off" ersetzen? Und wenn ja... warum?

Gruß,
imebro
Bitte warten ..
Mitglied: WinCobold
24.05.2020 um 13:35 Uhr
Hallo imebro,

du "sollst" gar nichts. Das SETLOCAL dürfte in diesem Fall vermutlich, genau wie das EXIT /B, keinen Schaden anrichten. Aber ich finde, man sollte nur Befehle verwenden, die man versteht und die tatsächlich nötig sind, um das gewünschte Ergebnis zu erreichen.

EOF selber ist meines Wissens kein Befehl, und ein GOTO EOF am Ende der Prozedur ist auch nicht nötig. Wenn alles so läuft, wie du möchtest, kannst du doch einfach alles lassen.

Noch ein Hinweis zu der Bemerkung

Zitat von Pjordorf:
Übrigens in deiner Beispiel Batch ist Zeile 9 mit goto END so überflüssig wie Essen gehen nach einen üppigen Gala Dinner.Deine Batch geht doch ganz alleine nach :END.

Das mag bei dem Beispiel, auf das sich Peter bezieht, stimmen. Aber in Bezug auf deine ursprüngliche Prozedur bin ich anderer Meinung. Natürlich ist dort das letzte GOTO nicht nötig, aber ich finde, dass die identischen Verarbeitungsblöcke das mehr als aufwiegen. Dann kannst du die nämlich beliebig verschieben oder neue einfügen, ohne dass die Steuerung kaputt geht.

Gruß vom
WinCobold
Bitte warten ..
Mitglied: imebro
24.05.2020 um 13:52 Uhr
OK, habe ich verstanden.

Dann lasse ich es jetzt so, wie es ist und so funktioniert es ja auch.

Danke für Deine Hilfe und auch an alle anderen Helfer

Gruß,
imebro
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Call befehl als Admin!
Frage von FrankreichBatch & Shell4 Kommentare

Hallo liebes Forum! Ich rufe in meinem Batchprogramm ein anderes Batchprogramm mit dem befehl "call" auf. Das Programm das ...

Batch & Shell

Batchdatei soll je nach Uhrzeit bestimmten Befehl ausführen

Frage von m0n0wall-neulingBatch & Shell7 Kommentare

Hallo, folgendes bekomme ich leider nicht hin: Es soll in der Batchdatei eine Uhrzeit gesetzt werden. Wird die Batchdatei ...

Batch & Shell

Batchdatei: SET-Befehl funktioniert in IF ELSE nicht

Frage von Alicudi2000Batch & Shell9 Kommentare

Guten Tag In einer CMD-Batchdatei musste ich den Quellcode ändern, weil ich keine Variable im ELSE-Teil definieren konnte. Einen ...

Voice over IP

Call Routen - Verständnis Lancom

Frage von ZZaaiiggaaVoice over IP12 Kommentare

Hallo zusammen, ich verstehe die Call Routen vom Lancom Router nicht ganz: Kann mir jemand vlt. anhand der 3 ...

Neue Wissensbeiträge
Datenschutz
Datenschutzproblem?
Information von Penny.Cilin vor 1 TagDatenschutz5 Kommentare

Hallo, gerade im Heise Newsticker gefunden: Frage: Warum wurden die Akten nicht ordnungsgemäß gesichert bzw. aufbewahrt? Patientenakten sind 30 ...

Windows Netzwerk

SCOM ( System Center Operations Manager ) um eine E-Mailschnittstelle erweitern

Anleitung von Juanito vor 2 TagenWindows Netzwerk

Einleitung System Center Operations Manager (SCOM) ist Microsoft's Lösung zum Überwachen von Servern. Dazu zählt die generelle Erreichbarkeit, Festplattenspeicher, ...

Humor (lol)
BioShield gegen 5G
Information von magicteddy vor 3 TagenHumor (lol)3 Kommentare

Moin wer sich gegen die hochgefährlichen 5G schützen möchte wird hier fündig: 5GBioShield "gegen 5G-Strahlung" Ich glaube, ich sollte ...

Windows Server

ScheduledTasks mit einem Group-Managed-Service-Account (GMSA) ausführen

Anleitung von ToniHo vor 3 TagenWindows Server

Hallo zusammen, wer schonmal versucht hat ein Group-Managed-Service-Account (GMSA) auf einem bestehenden ScheduledTask einzutragen, ist an der GUI vermutlich ...

Heiß diskutierte Inhalte
Microsoft
Zugriffsprobleme Festplatte
Frage von MiMa89Microsoft40 Kommentare

Hallo Zusammen, ich hoffe Ihr könnt mir bei folgendem Problem helfen. Ich habe eine externe Festplatte die nicht mehr ...

Microsoft
100 Prozent CPU Last gleich Volllast, Pustekuchen, nicht bei Microsoft!!! VOL 2
Frage von MysticFoxDEMicrosoft28 Kommentare

Liebe Freunde der Präzision und der Norm, ich möchte in diesem Beitrag konstruktiv an den folgenden Vorgängerbeitrag anschliessen, der ...

SAN, NAS, DAS
Entscheidungshilfe Storage für Netzwerkupgrade
Frage von m-jelinskiSAN, NAS, DAS14 Kommentare

Hallo zusammen, unsere Server und Storage-Systeme sind nun 6 Jahre alt und überfällig ausgetauscht zu werden. Daher haben wir ...

Microsoft
USB-Ports sperren mit Software
Frage von trabajadorMicrosoft10 Kommentare

Hallo, gesucht wird eine Software, welche alle USB-Ports sperrt bis auf für Maus, Tastatur und einem Admin-USB-Stick. Verwendet wird ...