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 IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

ERRORLEVEL-Parameter von einer Batch in eine andere übergeben, OHNE dass ERRORLEVEL bereits ausgeführt wird

Frage Entwicklung Batch & Shell

Mitglied: Kibatsu

Kibatsu (Level 1) - Jetzt verbinden

28.06.2007, aktualisiert 16:27 Uhr, 10338 Aufrufe, 8 Kommentare

Hallo,

ich will / muss mehrere Dateien von unserem Server auf SD-Karten überspielen und vorher ggf. die SD-Karten löschen, falls noch etwas darauf sein sollte.

Damit das Ganze schneller geht habe ich 4 CardReader zusammengebastelt und über ein Hub an den Rechner angeschlossen. Dazu habe ich mir ein Batch erstellt mit einem Menü, dass abfragt, welche Laufwerke bespielt werden sollen.

Entsprechung den Angaben des Benutzers erstellt die Batch dann eine Art Sammelbatch, welche dann die ebenfalls angelegten Batches für die einzelnen angegebenen Laufwerke startet, ergo 1 Batch startet gleichzeitig 4 Batches, welche dann die Datein vom Server gleichzeitig auf alle SD-Karten kopiert ...

Die 4 erstellten Batches sollen auch eine Fehlerabfrage mittels %ERRORLEVEL% machen und ggf. Bescheid sagen, falls Datein nicht kopiert werden konnten.

Mein Problem:
Wenn ich von der 1. Batch (die, die anderen 4 und die Sammelbatch generiert) ECHO %ERRORLEVEL% >> bla.bat verwende, führt er %ERRORLEVEL% bereits hier aus und gibt in der Regel natürlich den Wert 0 weiter.

In meinen 4 erzeugten Batches habe ich dann also keine IF %ERRORLEVEL%==0 Fehlerabfrage mehr, sonder nur noch IF 0==0, da er den %ERRORLEVEL% ja schon gechecked und das negative Ergebnis ja schon weitergegeben hat.

Auf jeden Fall besten Dank an den, der mir hier weiterhelfen kann!


Mit freundlichem Gruße

Kibatsu
Mitglied: bastla
28.06.2007 um 11:08 Uhr
Hallo Kibatsu und willkommen im Forum!

Eigentlich ist mir das Problem nicht klar - wenn in einem der 4 "Unter"-Batches ein Kopierfehler auftritt, kannst Du diesen ja dort abfangen und entsprechend darauf reagieren ...

Vielleicht stellst Du besser einmal etwas Code herein.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
28.06.2007 um 11:12 Uhr
Moin Kibatsu,

willkommen im Forum.

Kannszt Du biite die handvoll relevanter Zeilen posten, also
  • das erstmalige Setzen der Errorlevels in der Hauptbatch
  • die Aufrufe (CALLs?) der Unterbatche
  • und bitte eine Verdeutlichung, ob/wie Du die Unterbatche "generierst".

Dann gehts schneller.

Grüße
Biber
Bitte warten ..
Mitglied: Kibatsu
28.06.2007 um 11:39 Uhr
Auf jeden Fall schon mal besten Dank für die schnelle Rückmeldung ;)
Anbei die denke ich mal relevantesten Zeilen:



:: Abfrage und Festlegung der Variablen

:FIRSTCHOICE
:: SET /P prompted und legt die Variable fest (z.B. F in dem Fall hier)
SET Choice1=
SET /P Choice1=1. Laufwerk:
:: Die folgende Syntax startet den Substring (bei 0 und 1 Zeichen lang)
IF NOT '%Choice1%'=='' SET Choice1=%Choice1:~0,1%


(An der Stelle kommen hier 4 Abfragen, für die 4 Laufwerke, die bespielt werden sollen, ergo :SECONDCHOICE, 3rd, etc...)


:: Pfaderstellung für die dynamischen Leufwerke
IF EXIST C:\Dokumente" "und" "Einstellungen\%USERNAME%\Anwendungsdaten\Batch\ RD /S /Q C:\Dokumente" "und" "Einstellungen\%USERNAME%\Anwendungsdaten\Batch
MKDIR "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch"


:: Dynamische Erzeugung der Laufwerke und Löschung, fall bereits vorhanden

IF EXIST "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat" DEL /F "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"

!!! Jetzt keinen Schreck kriegen, nach dem dicken Block kommt nochmal das Endergebnis, aber der sollte mit rein, damit man den Fehler sehen kann !!!

ECHO @ECHO OFF >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO. >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO IF EXIST %Choice1%:\ GOTO CHECKFILES >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO ECHO Es befindet sich kein Datentraeger im Laufwerk %Choice1%:\ >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO PAUSE >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO EXIT >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO. >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO :CHECKFILES >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO IF EXIST "S:\neueste Version\" GOTO DELETE >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO ECHO Die Quelldatei(en) auf dem Server konnten nicht gefunden werden oder es besteht keine Verbindung zum Netzwerk. >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO PAUSE >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO EXIT >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO. >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO :DELETE >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO :: Entfernen des Verzeichnisses inkl. aller Unterverzeichnisse ohne Abfrage >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO RD /S /Q %Choice1%:\ >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO. >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO :: Kopiervorgang vom Server auf die SD-Card >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO ECHO Die Datei(en) werden nach %Choice1%:\ kopiert. Bitte Warten . . . >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO XCOPY /I /C /E /Q /Y "S:\neueste Version\*.*" %Choice1%:\ >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO. >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO :: Überprüfung des Kopiervorganges (bei Erfolg Fenster schließen, sonst Fehlermeldung ausgeben) >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO IF %ERRORLEVEL%==0 GOTO NOERROR >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO CLS >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO ECHO Die Datei(en) konnten nicht kopiert werden. >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO PAUSE >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO EXIT >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO. >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO :NOERROR >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
ECHO EXIT >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"


Dieser gesammte Block sieht dann in den neu angelegten Datein dann so aus:

@ECHO OFF

IF EXIST F:\ GOTO CHECKFILES
ECHO Es befindet sich kein Datentraeger im Laufwerk F:\
PAUSE
EXIT

:CHECKFILES
IF EXIST "S:\neueste Version\" GOTO DELETE
ECHO Die Quelldatei(en) auf dem Server konnten nicht gefunden werden oder es besteht keine Verbindung zum Netzwerk.
PAUSE
EXIT

:DELETE
:: Entfernen des Verzeichnisses inkl. aller Unterverzeichnisse ohne Abfrage
RD /S /Q F:\

:: Kopiervorgang vom Server auf die SD-Card
ECHO Die Datei(en) werden nach F:\ kopiert. Bitte Warten . . .
XCOPY /I /C /E /Q /Y "S:\neueste Version\*.*" F:\

:: Überprüfung des Kopiervorganges (bei Erfolg Fenster schließen, sonst Fehlermeldung ausgeben)
IF 0==0 GOTO NOERROR (<--- HIER IST DER FEHLER!!!)
CLS
ECHO Die Datei(en) konnten nicht kopiert werden.
PAUSE
EXIT

:NOERROR
EXIT


Hier dann der letzte Teil, der die Sammelbatch auf dem Desktop des Benutzers anlegt:

:: Abfrage, ob noch eine alte Version auf dem Desktop des Benutzers liegt, wenn ja, dann löschen

IF EXIST "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\SD-Card Patcher.bat" DEL /F "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\SD-Card Patcher.bat"

ECHO @ECHO OFF >> "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\SD-Card Patcher.bat"
ECHO. >> "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\SD-Card Patcher.bat"

ECHO START C:\Dokumente" "und" "Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk" "%Choice1% >> "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\SD-Card Patcher.bat"
ECHO START C:\Dokumente" "und" "Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk" "%Choice2% >> "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\SD-Card Patcher.bat"
ECHO START C:\Dokumente" "und" "Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk" "%Choice3% >> "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\SD-Card Patcher.bat"
ECHO START C:\Dokumente" "und" "Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk" "%Choice4% >> "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\SD-Card Patcher.bat"
ECHO. >> "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\SD-Card Patcher.bat"
ECHO :: Erstellt am %DATE% um %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% von %USERNAME% >> "C:\Dokumente und Einstellungen\%USERNAME%\Desktop\SD-Card Patcher.bat"

ECHO.
ECHO Der SD-Card Patcher wurde mit den von Ihnen angegebenen Laufwerken auf Ihrem Desktop hinterlegt.
ECHO.

PAUSE
EXIT


Die ganzen Befehle werden ja durch den ECHO Befehl weitergegeben in die neuen Datein, nur eben %ERRORLEVEL% wird halt BEREITS BEIM weitergeben ausgeführt und liefert dass Ergebnis 0
-> IF 0==0 GOTO NOERROR

Was ich möchte ist natürlich, dass die 4 Unterbatches am Ende %ERRORLEVEL% checken und NICHT der Batch-Generator.


Nochmals vielen Dank an all jene, die sich den ganzen Batzen durchgelesen haben! ;)
Bitte warten ..
Mitglied: bastla
28.06.2007 um 11:51 Uhr
Hallo Kibatsu!

!!! Jetzt keinen Schreck kriegen ...
Wir sind hier nicht so leicht zu erschrecken ...

Versuch es mit folgender Zeile:
01.
ECHO IF ^%ERRORLEVEL^%==0 GOTO NOERROR >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
Mit den ^ maskierst Du die %-Zeichen, dadurch werden sie nicht als "Steuerzeichen" interpretiert.

Grüße
bastla
Bitte warten ..
Mitglied: Kibatsu
28.06.2007 um 13:45 Uhr
Hallo bastla!

<code>ECHO IF ^%ERRORLEVEL^%==0 GOTO NOERROR

hat in den 4 Unterbatches leider nur zu

IF ==0 GOTO NOERROR geführt anstatt zu
IF %ERRORLEVEL%==0 GOTO NOERROR

Noch irgendwelche anderen Vorschläge?


Gruß, Kibatsu
Bitte warten ..
Mitglied: bastla
28.06.2007 um 13:53 Uhr
Hallo Kibatsu!

Sorry, nur am Prompt getestet ...

Jetzt aber (mit je einem % mehr):
01.
ECHO IF ^%%ERRORLEVEL^%%==0 GOTO NOERROR >> "C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Batch\Laufwerk %Choice1%.bat"
Grüße
bastla
Bitte warten ..
Mitglied: Kibatsu
28.06.2007 um 14:01 Uhr
Hallo bastla,

Jetzt aber (mit je einem % mehr):
<code>ECHO IF ^%%ERRORLEVEL^%%==0 GOTO NOERROR

daran lag's! Nun funktioniert alles. Wer soll denn auf sowas kommen ... -.-"

Ich dank dir vielmals! ;)


Kibatsu
Bitte warten ..
Mitglied: Biber
28.06.2007 um 16:27 Uhr
Hallo Kibatsu,

Fussnote zu bastlas Lösung:

Ausreichend wäre auch ein einfaches
01.
ECHO IF %%ERRORLEVEL%%==0 GOTO NOERROR >>....
...also ohne die Maskierung mit dem Caret ("^").

Aber da es so oder so funktioniert, setze ich mal den Beitrag auf gelöst.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Win10 ändert den Errorlevel? ( Batch )
gelöst Frage von clragonBatch & Shell12 Kommentare

Hey Leute, Ich habe heute wieder mit Prozessen herumgebastelt, die sich gegenseitig überwachen. Da plötzlich, habe ich einen Fehler. ...

Batch & Shell
BatchFile mit Errorlevel
gelöst Frage von MemaAaBatch & Shell7 Kommentare

Hallo Da ich mit Batchprogrammierung nur Grundlegende Erfahrungen habe frage ich hier nach. und zwar habe ich ein Batchfile, ...

Batch & Shell
Bedeutung von RD Errorlevel 1 und Abweichung von errorlevel Meldungen in Batch und Konsole
Frage von anmelderBatch & Shell11 Kommentare

Ich lösche einen Flashspeicher im Netzwerk mit: Ich habe den Code vor Tagen erfolgreich getestet und er lief mit ...

Batch & Shell
For bringt falsches Errorlevel
gelöst Frage von golsinBatch & Shell5 Kommentare

Guten Morgen, mein Ziel ist es aus den for Schleifen das Errorlevel des Pings zu bekommen, komischerweise bekomme ich ...

Neue Wissensbeiträge
Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 18 MinutenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 34 MinutenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 12 StundenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 19 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement17 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...