Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Errorlevel zurücksetzten

Frage Entwicklung Batch & Shell

Mitglied: FomerMay

FomerMay (Level 1) - Jetzt verbinden

29.02.2012, aktualisiert 16:17 Uhr, 2044 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 Win10 ändert den Errorlevel? ( Batch ) (12)

Frage von clragon zum Thema Batch & Shell ...

Windows Netzwerk
gelöst Teamviewer 12 Testversion zurücksetzten? (4)

Frage von Geforce zum Thema Windows Netzwerk ...

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

Frage von miichiii9 zum Thema Exchange Server ...

Neue Wissensbeiträge
Notebook & Zubehör

WOL bei HP Notebooks

(5)

Erfahrungsbericht von Henere zum Thema Notebook & Zubehör ...

LAN, WAN, Wireless

Neue Cisco Catalyst-Serie 9000

Information von Kuemmel zum Thema LAN, WAN, Wireless ...

Sicherheit

Millionen Euro in den Sand gesetzt?

(3)

Information von transocean zum Thema Sicherheit ...

Heiß diskutierte Inhalte
Windows 10
Netzwerkkarte schaltet sich erst nach dem Logon ein (21)

Frage von DerWoWusste zum Thema Windows 10 ...

Windows Server
Seit IP Umstellung DC DNS Fehler (17)

Frage von Yaimael zum Thema Windows Server ...

Weiterbildung
gelöst Fest angestellter Admin oder Systemhaus Admin mit Kundenbetreuung? (15)

Frage von Voiper zum Thema Weiterbildung ...

Netzwerke
Mobile Einwahl IPSec VPN von iPhone iPad T-Mobile zur Pfsense (15)

Frage von Spitzbube zum Thema Netzwerke ...