89371
Goto Top

NET USE Erfolgsmeldungen unterdrücken, aber Passwortabfrage anzeigen

Hallo zusammen,

in einer login.bat werden viele Laufwerke gemappt.
Bei jedem Laufwerk sieht man in der Batchdatei die Meldung "Der befehl wurde erfolgreich ausgeführt".

Das Fenster sieht also so aus:

Der befehl wurde erfolgreich ausgeführt

Der befehl wurde erfolgreich ausgeführt

Der befehl wurde erfolgreich ausgeführt

Der befehl wurde erfolgreich ausgeführt

Der befehl wurde erfolgreich ausgeführt

Der befehl wurde erfolgreich ausgeführt

Der befehl wurde erfolgreich ausgeführt

Der befehl wurde erfolgreich ausgeführt


Ich würde die Meldungen gerne unterbinden, z.B. so:

@echo off
net use x: \\server\share >NUL
net use y: \\nas\share >NUL
usw...

Das Problem ist jedoch, wenn bei irgendeinem Laufwerk ein Problem auftaucht, z.B. weil auf dem Server das Passwort noch nicht repliziert wurde, dann sieht man nicht mehr, dass da eigntlich eine Meldung stehen würde: "Bitte geben Sie das Passwort ein". Die Leute rufen dann an und wissen nicht, warum das Script nicht beendet, sie sehen auch nicht bei welchem Laufwerk es nicht weiter geht.

Wie kann ich die Erfolgsmeldung unterbinden aber die Passwortabfrage anzeigen lassen?

Content-Key: 372753

Url: https://administrator.de/contentid/372753

Ausgedruckt am: 29.03.2024 um 02:03 Uhr

Mitglied: Edaseins
Edaseins 02.05.2018 aktualisiert um 20:22:04 Uhr
Goto Top
Du Könntest mit Errorlevel arbeiten.

@echo off
net use g: \\... >Nul
if %ERRORLEVEL%==0 goto lw2
if %ERRORLEVEL%==1 goto retry1

:retry1
net use g: \\....
goto lw2

:lw2
net use H: \\...>Nul
if %ERRORLEVEL%==0 goto lw3
if %ERRORLEVEL%==1 goto retry2

:retry2
net use h: \\....
goto lw3

:lw3

usw... usw... usw...


Bewirkt dass du die Meldungen unterdrückst, und sie nur kommen wenn ein Fehle rauftritt, die Batch wird damit immens Groß weil du für jeden kopiervorgang 2 Errorlevelweiterleitungen bauen musst.
Mitglied: rubberman
rubberman 02.05.2018 um 19:37:17 Uhr
Goto Top
Glaube nicht dass es da eine Möglichkeit gibt. Aber mal so ganz nebenbei (bin kein Netzwerker, darum bitte nicht über die Frage wundern), würde es denn überhaupt einen Sinn machen den User nach dem Passwort zu fragen, wenn es nicht repliziert wurde?

@Edaseins
Wenn NET USE auf Benutzereingabe wartet, dann ist das Script unterbrochen. Heißt, die Errorlevelabfragen werden nicht gesehen, solange die Abarbeitung steht. Und nein, das Script würde selbst dann nicht endlos groß werden wenn das funktionieren würde. Lediglich wenn man Spaghetticode mit elfundneunzig GOTO Anweisungen schreibt. Es gibt Schleifen und Subroutinen für solche Zwecke face-wink

Steffen
Mitglied: Edaseins
Edaseins 02.05.2018 aktualisiert um 20:17:39 Uhr
Goto Top
Errorlevel funktioniert, gibt trotz >Nul sogar ne Rückmeldung, dann wie oben beschrieben die Schleife zurück bauen ohne Unterdrückung und du solltest zur eingabe aufgefordert werden


Damit hast du die nervigen Befehl wurde ausgeführt meldungen unterdrückt und du kommst zurück welches Laufwerk nen Fehler hat... einfach ausprobieren und zurückmelden.

Lieber nen Spaghetti Code mit GOTO Anweisungen als sinnloses Gebrabbel was überhaupt keinen Lösungsansatz bietet.

Bei der ersten Batch hatte ich absichtlich nen falsches PAsswort der Batch mitgegeben und beim 2ten mal ohne User.
unbenannt
unbenannt
unbenannt
Mitglied: rubberman
rubberman 02.05.2018 um 21:05:54 Uhr
Goto Top
Zitat von @Edaseins:
als sinnloses Gebrabbel was überhaupt keinen Lösungsansatz bietet.
Danke für die Blumen. Hätte ja auch ein Anreiz sein können es besser zu versuchen, als auf GOTO Gedöns zu beharren.
@echo off &setlocal
for %%i in (
"x: \\127.0.0.1\test"  
"y: \\127.0.0.1\test"  
) do (
  net use %%~i >nul || net use %%~i
)
Mitglied: Zendara
Zendara 03.05.2018 aktualisiert um 10:29:30 Uhr
Goto Top
Hallo,

hier ein Beispiel von mit call und alternativ mit goto.
Mit call finde ich es persönlich bei vielen Laufwerken übersichtlicher.

Es kommt keine Meldung wenn der Username oder Passwort nicht stimmten oder das Laufwerk nicht verfügbar ist.
In Zeile 37 könntest du das goto:EOF durch zb. pause ersetzen dann sieht man, bei welchem Laufwerk ein Fehler ist.


@echo off & setlocal enabledelayedexpansion
title Netzlaufwerk

cls
	echo.
	echo ===================================
	echo  Netzlaufwerke werden verbunden...
	echo ===================================
	echo.
ping localhost -n 1 >nul

set "loguser=%username%"  

:Netzlaufwerke
REM Dieser Teil ist von mir drin und wird nur bei unterschiedlichen VLANs für bestimmte Konstellationen benötigt.
REM Man kann auch alles mit %sub_IP% durch die richtige IP ersetzen und diesen Teil hier löschen.
FOR /F "tokens=8" %%A IN ('tracert -d -h 1 8.8.4.4 ^| findstr " 1 "' ) do (  
	set "GW=%%A"  
)
if "%GW:~0,9%"=="192.168.0" (set "sub_IP=192.168.99")  
if "%GW:~0,9%"=="192.168.1" (set "sub_IP=192.168.99")  
if "%GW:~0,9%"=="192.168.2" (set "sub_IP=192.168.99")  

REM Hier kannst du deine Laufwerke auflisten.
call :Netzlaufwerk_1
call :Netzlaufwerk_2
call :Netzlaufwerk_3
call :Netzlaufwerk_4
goto Userbackup

:_connect
REM Hier der net use Befehl für alle Netzlaufwerke mit call gelöst.
echo.
echo %freigabe%
if exist %LW%:\*.* goto:EOF
set "netpathconnect=net use %LW%: \\%ServerIP%\%freigabe% /user:%loguser% /Persistent:No"  
@echo Verbindung mit %LW%: %freigabe% wird hergestellt...
if not exist \\%ServerIP%\%freigabe% goto:EOF
%netpathconnect%
goto:EOF

REM Hier werden die gewünschten Informationen zu den Laufwerken angegeben
:Netzlaufwerk_1
set LW=M
set ServerIP=%sub_IP%.16
set freigabe=Netzlaufwerk_1
call :_connect
goto:EOF

:Netzlaufwerk_2
set LW=N
set ServerIP=%sub_IP%.14
set freigabe=Netzlaufwerk_2
call :_connect
goto:EOF

:Netzlaufwerk_3
set LW=P
set ServerIP=%sub_IP%.25
set freigabe=Netzlaufwerk_3
call :_connect
goto:EOF

:Netzlaufwerk_4
set LW=S
set ServerIP=%sub_IP%.15
set freigabe=Netzlaufwerk_4
call :_connect
goto:EOF

:Userbackup
REM Hier der net use Befehl für Userbackup mit goto gelöst.
set LW=B
if /I %username%==username_1 goto username_1
if /I %username%==username_2 goto username_2
goto exit

:username_1
if not exist %LW%:\*.* net use %LW%: \\%sub_IP%.15\username_1 /user:%username% /Persistent:No
goto exit

:username_2
if not exist %LW%:\*.* net use %LW%: \\%sub_IP%.15\username_2 /user:%username% /Persistent:No
goto exit

:exit
ping localhost -n 1 >nul
exit

Lg
Zendara
Mitglied: Zendara
Zendara 03.05.2018 um 10:12:30 Uhr
Goto Top
Ok das mit der Passwortabfrage funktioniert nicht so ganz face-sad