89371
02.05.2018
7726
6
0
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?
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 372753
Url: https://administrator.de/contentid/372753
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
6 Kommentare
Neuester Kommentar
Du Könntest mit Errorlevel arbeiten.
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.
@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.
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
Steffen
@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
Steffen
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.
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.
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
)
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.
Lg
Zendara
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