Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Errorlevel zurücksetzten

Frage Entwicklung Batch & Shell

Mitglied: FomerMay

FomerMay (Level 1) - Jetzt verbinden

29.02.2012, aktualisiert 16:17 Uhr, 2032 Aufrufe, 7 Kommentare

Hi,

ich habe eine Batchdatei die Dateien verschiebt, bei einem Fehler soll eine Meldung ausgegeben werden und danach die nächste Datei verschoben werden. Ab der ersten Datei bei der Fehler auftritt wird bei allen anderen Dateien auch die Meldung ausgegeben, was natürlich daran liegt das der Errorlevel dann immer größer 0 ist. Die Frage kann ich den Errorlevel einfach mit

01.
SET errorlevel = 0
wieder auf null zurücksetzten oder gibt es "elegantere" Methoden?
Mitglied: bastla
29.02.2012 um 16:19 Uhr
Hallo FomerMay!

"Elegant" fände ich es, den fraglichen Code zu posten ...

Grüße
bastla
Bitte warten ..
Mitglied: FomerMay
29.02.2012 um 16:28 Uhr
Wenns weiterhilft:

01.
setlocal enabledelayedexpansion 
02.
FOR %%i IN (%quelle%\*.DLL) DO ( 
03.
	SET pgmname=%%~ni 
04.
	ECHO.******************************************************************************* 
05.
	ECHO.* Verschieben des Programms %%~ni                                             * 
06.
	ECHO.******************************************************************************* 
07.
	MOVE %quelle%\%%~ni.DLL %ziel% 
08.
	IF ERRORLEVEL 1 ( 
09.
		CALL :errCoDLL  
10.
	) ELSE ( 
11.
		ECHO.%%~ni.DLL wurde verschoben... 
12.
		ECHO.%DATE% %TIME:~0,8% - %%~ni.DLL uebernommen >> X:\copy_dll_log.log 
13.
14.
15.
IF "!openDir!"=="J" CALL :OpenDir  
16.
endlocal 
17.
[...] 
18.
setlocal enabledelayedexpansion 
19.
FOR %%i IN (%quelle2%\*.DLL) DO ( 
20.
	SET pgmname=%%~ni 
21.
	ECHO.******************************************************************************* 
22.
	ECHO.* Verschieben des Programms %%~ni                                             * 
23.
	ECHO.******************************************************************************* 
24.
	MOVE %quelle2%\%%~ni.DLL %ziel2% 
25.
	IF ERRORLEVEL 1 ( 
26.
		CALL :errCoDLL  
27.
	) ELSE ( 
28.
		ECHO.%%~ni.DLL wurde verschoben... 
29.
		ECHO.%DATE% %TIME:~0,8% - %%~ni.DLL uebernommen >> X:\copy_dll_log.log 
30.
31.
32.
IF "!openDir!"=="J" CALL :OpenDir  
33.
endlocal 
34.
GOTO :ende 
35.
 
36.
REM *************************************************************************************** 
37.
REM * Fehlerbehandlung                                                                    * 
38.
REM *************************************************************************************** 
39.
 
40.
:errCoDLL 
41.
ECHO.Fehler beim verschieben der DLL, sie muessen die DLL fuer das Programm %pgmname% von Hand verschieben 
42.
ECHO.%DATE% %TIME:~0,8% - %pgmname% - Fehler beim verschieben (DLL) >> X:\copy_dll_log.log 
43.
SET openDir=J 
44.
GOTO :EOF 
45.
 
46.
REM *************************************************************************************** 
47.
REM * Unterroutinen                                                                       * 
48.
REM *************************************************************************************** 
49.
 
50.
:OpenDir 
51.
%SystemRoot%\explorer.exe /e,%pfad%\ 
52.
SET openDir=N 
53.
GOTO :EOF 
54.
 
55.
[...] 
56.
 
57.
:ende 
58.
PAUSE 
59.
EXIT /b 0
hab mal alles unwichtige rausgeschnitten.

Ich würde jetzt bei der Sprungmarke :errCoDLL vor dem GOTO den Errorlevel wieder auf 0 setzten.
Bitte warten ..
Mitglied: bastla
29.02.2012 um 16:38 Uhr
Hallo FomerMay!

Ich würde es (ungetestet) für die Zeilen 7 - 13 so versuchen:
01.
    MOVE %quelle%\%%~ni.DLL %ziel% && ( 
02.
        ECHO.%%~ni.DLL wurde verschoben... 
03.
        ECHO.%DATE% %TIME:~0,8% - %%~ni.DLL uebernommen >> X:\copy_dll_log.log 
04.
    ) || ( 
05.
        CALL :errCoDLL  
06.
    )
BTW: "%DATE% %TIME:~0,8%" in der Schleife wird für alle Dateien den gleichen Timestamp liefern - Grund: keine "delayedexpansion", und für "%quelle%\%%~ni.DLL" sollte doch "%%i" genügen ...

Grüße
bastla
Bitte warten ..
Mitglied: 60730
29.02.2012 um 16:38 Uhr
moin,

ich schneid auch mal alles unwichtige raus...

24. MOVE %quelle2%\%%~ni.DLL %ziel2%
25. IF ERRORLEVEL 1 (

  • Würde ich doch so herum umgestalten...
24. MOVE %quelle2%\%%~ni.DLL %ziel2%
25. IF not exist %ziel2%\ %%~ni.DLL echo %%~ni.DLL konnte nicht nach %ziel2% verschoben werden>>error.log

und irgendwo am ende
if exist error.log echo mach mir den Hengst

Gruß
Bitte warten ..
Mitglied: FomerMay
29.02.2012 um 16:46 Uhr
Kannst du kurz erklären auf welcher Grundlage er hier
01.
MOVE %quelle% %ziel% && ( 
02.
     ECHO 
03.
     ECHO 
04.
) | | ( 
05.
     CALL 
06.
)
erkennt ob ein Fehler vorliegt oder nicht? Gerne auch ein Stichwort nachdem ich googlen und selbst nachlesen kann.
Bitte warten ..
Mitglied: bastla
29.02.2012 um 16:52 Uhr
Hallo FomerMay!

Verknüpfung zweier Anweisungen mit "&&": 2. Anweisung ausführen, wenn kein Fehler bei der 1. Anweisung, mit "||": 2. Anweisung ausführen, wenn Fehler bei der 1. Anweisung ...
http://www.microsoft.com/resources/documentation/windows/xp/all/proddoc ... oder auch
hh ms-its:%windir%\Help\ntcmds.chm::/ntcmds_shelloverview.htm
Grüße
bastla
Bitte warten ..
Mitglied: mathe172
29.02.2012 um 16:57 Uhr
Hallo,

der Code von Bastla macht folgendes:
  • Verschiebe die Datei von a nach b
  • Wenn funktioniert hast (&&), mache das in der ersten Klammer
  • Wenns nicht funktioniert hat (||), mach das in der zweiten

&& und || sind also da, um Befehle zu Verknüpfen, wobei der zweite nur bei (Miss-)Erfolg des ersten ausgeführt wird.

MfG,
Mathe172
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Abfrage ERRORLEVEL springt aus der FOR Schleife (8)

Frage von Galindiesel zum Thema Batch & Shell ...

Batch & Shell
gelöst Seltsames Verhalten bei Errorlevel abfrage in FOR DO Schleife (1)

Frage von Kalma73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Win10 ändert den Errorlevel? ( Batch ) (12)

Frage von clragon zum Thema Batch & Shell ...

Exchange Server
gelöst Exchnage mit POPBeamer Zeitstempel zurücksetzten (5)

Frage von miichiii9 zum Thema Exchange Server ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (56)

Frage von pjrtvly zum Thema Internet ...

Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

LAN, WAN, Wireless
gelöst IP Adressen - Modem - Switch - Accesspoint (23)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...

Windows 7
Bluesreens unternehmensweit (22)

Frage von SYS64738 zum Thema Windows 7 ...