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
GELÖST

Wie BATCH ERRORLEVEL ignorieren

Frage Entwicklung Batch & Shell

Mitglied: gismo82

gismo82 (Level 1) - Jetzt verbinden

03.11.2009 um 11:14 Uhr, 8023 Aufrufe, 15 Kommentare

Hallo,

in einem Batch-Skript habe ich nach folgender Anleitung http://www.administrator.de/index.php?content=102460 folgendes Codesegment benutzt:
set /p =Mounting network drive...<NUL 
if %testVar%==0 ( 
    echo done 
) else ( 
    echo failed 
)
Das Netzlaufwerk wird ordnungsgemäß eingehangen, also testvar ist auf 0 gesetzt.

Ausgabe:
Mounting network drive...done
Leider liefert der Befehl
set /p =Mounting network drive...<NUL
als errorlevel 1 zurück, welches dann im ganzen Script auf 1 gesetzt bleibt, ungeachtet weiterer foglender erfolgreicher Befehle

Wie kann ich umgehen, dass dieser Befehl das Errorlevel 1 zurückgibt?


Gruß Andreas
Mitglied: Farbauti
03.11.2009 um 11:37 Uhr
Hmmm, ich sehe in deinem Code leider weder ein NET USE, noch die Abfrage des ERRORLEVELs.

Vielleicht beschreibst du einfach mal in Prosa, was du eigentlich willst...

Gruß, Farbauti.
Bitte warten ..
Mitglied: gismo82
03.11.2009 um 11:47 Uhr
Dies ist ja nur ein Auszug aus meinem Skript. Das NET USE steht ganz am Anfang. Und liefert auch das richtige ERRORLEVEL 0 zurück.

Hier nochmal mein Script mit NET USE
@echo off 
	net use * \\seetxxnas01.txx.seeburger.de\dataWarehouseImportFolder\GTSProcessList >NUL 
	echo NET USE Errorlevel = %errorlevel% 
	 
	if %errorlevel%==0 ( 
		set testVar=0 
	) else ( 
		set testVar=1 
	echo testVar = %testVar% 
	 
	set /p =Mounting network drive...<NUL  
 
	if %testVar%==0 (  
		echo done  
	) else (  
		echo failed  
	 
	echo Errorlevel nach SET Befehl = %errorlevel%
Ausgabe:
NET USE Errorlevel = 0 
testVar = 0 
Mounting network drive... done 
Errorlevel nach SET Befehl = 1
Diese Zeile "Mounting network drive...done" ist die Ausgabe ob es erfolgreich war.
Bitte warten ..
Mitglied: bastla
03.11.2009 um 11:54 Uhr
Hallo gismo82!

Soferne Du tatsächlich die Variable %testVar% später noch benötigen solltest, dürfte aber trotzdem
01.
@echo off & setlocal 
02.
net use * \\seetxxnas01.txx.seeburger.de\dataWarehouseImportFolder\GTSProcessList >NUL 
03.
set testVar=%errorlevel% 
04.
if %testVar%==0 ( 
05.
	echo Mounting network drive...done 
06.
) else ( 
07.
	echo Mounting network drive...failed 
08.
)
genügen ...

... ansonsten aber vielleicht auch schon
net use * \\seetxxnas01.txx.seeburger.de\dataWarehouseImportFolder\GTSProcessList >NUL && (echo Mounting network drive...done) || (echo Mounting network drive...failed)
Grüße
bastla
Bitte warten ..
Mitglied: gismo82
03.11.2009 um 12:53 Uhr
Wäre halt schöner gewesen, wenn die Ausgabe zur Laufzeit ausgegeben würde...

Mich würde auch einmal interresieren, ob überhaupt möglich ist, das ERRORLEVEL zu ignorieren
Bitte warten ..
Mitglied: Farbauti
03.11.2009 um 13:02 Uhr
Zitat von gismo82:
Wäre halt schöner gewesen, wenn die Ausgabe zur Laufzeit
ausgegeben würde...

Mich würde auch einmal interresieren, ob überhaupt
möglich ist, das ERRORLEVEL zu ignorieren

Die Ausgabe wird doch zur Laufzeit ausgegeben. Was meinst du genau?
Und der Errorlevel hat prinzipiell keine Auswirkung auf nachfolgende Befehle; es sei denn, du fragst ihn aktiv ab.


Gruß, Farbauti.
Bitte warten ..
Mitglied: miniversum
03.11.2009 um 13:11 Uhr
warum nicht so?
set errorlevel=0
Bitte warten ..
Mitglied: gismo82
03.11.2009 um 13:13 Uhr
weil set errorlevel=0 das errorlevel IMMER auf 0 setzt, egal was danach passiert. Dies gilt dann für die ganze Session.

Das ist nicht gut. Vielleicht gibts da ja andere Möglichkeiten.

[EDIT:] Zur Laufzeit meine ich:
Bevor mein Befehl (Microsoft Logparser in meinem Fall) ausgeführt wird, dann soll
Executing Logparser...
ausgegeben werden. Wenn der LogParser erfolgreich gearbeitet hat, dann soll
done bzw. failed
angehangen werden.
Bitte warten ..
Mitglied: Farbauti
03.11.2009 um 13:57 Uhr
Zitat von gismo82:
[EDIT:] Zur Laufzeit meine ich:
Bevor mein Befehl (Microsoft Logparser in meinem Fall) ausgeführt wird...

Wenn dir das so wichtig ist, dann halt so:
01.
set /p =Mounting network drive...<NUL 
02.
net use * \\seetxxnas01.txx.seeburger.de\dataWarehouseImportFolder\GTSProcessList >NUL && (echo done) || (echo failed)
Bitte warten ..
Mitglied: Biber
03.11.2009 um 14:21 Uhr
@Farbauti

<Erbsenzählermode>
wobei deine Variante in einem Fall zu "jahrelang gar nichts" führt...
Wenn für das net use eine Eingabe erwartet wird (Benutzername/Passwort), dann wird die "Eingabeaufforderung" unterdrückt, niemand sieht etwas und weder "echo DONE" noch && "echo In die Grütze" wird jemals erreicht.
</Erbsenzählermode>

Grüße
Biber
Bitte warten ..
Mitglied: gismo82
03.11.2009 um 14:30 Uhr
Hi...

aber ich muss jetzt einfach nochmal fragen...

Gibt es keine Möglichkiet, das Errorlevel zu ignorieren, bzw. auf 0 zu setzen? Denn, wenn bei diesem SET das Errorlevel auf 1 gesetzt wird, dann bleibt das immer auf 1

Gruß Andreas
Bitte warten ..
Mitglied: Biber
03.11.2009 um 14:59 Uhr
Moin gismo82,

Gibt es keine Möglichkiet, das Errorlevel zu ignorieren, bzw. auf 0 zu setzen?
Doch, natürlich.
Eigentlich jeder interne/externe Befehl setzt den Errorlevel auf 0 = Alles prima, wenn er erfolgreich und planmäßig zu einem ende kommt.

Allerdings ist der SET-Befehl eine Ausnahme dieser Regel.

Wenn du WTF-auch-immer das Errorlevel innerhalb des Batchschnipsels auf 0 setzen willst/musst/möchtest:
01.
REM ein CD zeigt das aktuelle Verzeichnis an UND setzt das Errotlevel auf 0. Da kann nix schiefgehen. Eigentlich. 
02.
cd >nul 
03.
echo Errorlevel ist: %Errorlevel% nach einem Befehl "CD ohne Parameter"
Wenn du ein ERRORLEVEL 0 nach außen transportieren willst (Rückgabewert des batches an ein aufrufendes Programm):
Verwende "EXIT /B xx" mit xx als deinem gewünschten Rückgabewert.
Siehe Hilfe "Exit /?" am CMD-Prompt.

Grüße
Biber
Bitte warten ..
Mitglied: Farbauti
03.11.2009 um 15:02 Uhr
Zitat von Biber:
@Farbauti

<Erbsenzählermode>
wobei deine Variante in einem Fall zu "jahrelang gar nichts" führt...

Du bist ja lustig.
Wenn du alle Posts gelesen hättest, hättest du gemerkt, dass ich das auch nur überbommen habe, und es nicht meine Variante ist
Bitte warten ..
Mitglied: Biber
03.11.2009 um 15:38 Uhr
@Farbauti

...und es nicht meine Variante ist
Es sind doch immer die Boten, die geköpft werden.... *gg

Grüße
Biber
Bitte warten ..
Mitglied: Biber
12.11.2009 um 15:09 Uhr
Moin gismo82,

ich hatte neulich schon per PN bei dir nachgefragt:

Wie ist denn der Status deiner Frage?
Hinreichend beantwortet? Fragen offen? Gegenstandslos aufgrund einer unverhofften Erbschaft?

Bitte entweder abhaken oder nachhaken.

Danke
Biber
Bitte warten ..
Mitglied: gismo82
12.11.2009 um 16:20 Uhr
Sorry,

hatte das total vergessen...ist erledigt. Hat mir weitergeholfen. Danke

Gruß...
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Router & Routing
gelöst Empfehlung günstiges ADSL2+ nur Modem (10)

Frage von TimMayer zum Thema Router & Routing ...

Server-Hardware
Lenovo Server System X 3650 M5 Festplatten (9)

Frage von Hendrik2586 zum Thema Server-Hardware ...