it-swarm.com.de

Stapelprüfung, ob ein zugeordnetes Netzlaufwerk vorhanden ist

Ich schreibe gerade ein Skript, das ein Netzlaufwerk dem Buchstaben Z zuordnen sollte. Ich verwende den Befehl Net Use z: \\path. Wenn der Benutzer diesen Buchstaben bereits verwendet, kann ich ihn nicht zuordnen Gibt es eine Möglichkeit, das Vorhandensein dieses Laufwerks (z) zu überprüfen, und wenn es vorhanden ist, um es abzuhängen und in einen anderen Buchstaben zu mounten und trotzdem das Laufwerk z zu verwenden, das ich für mein Skript benötige, ist dies Teil einer Installation und es sollte auf Z-Laufwerk sein.

17
user3502786

Sie können prüfen, ob das Laufwerk mit IF EXIST Z:\ gemountet ist. Das sollte funktionieren:

if exist z:\ (
    Net Use z: /delete
)
Net Use z: \\path
29
MichaelS

Ein anderer möglicher Weg könnte sein:

Net Use Z:
if %errorlevel% EQU 0 Net Use Z: /delete
Net Use Z: \\path
4
sactiw

Ich verwende das folgende Scriptbit, um alle Laufwerke aufzuheben:

:: First unmap all network drives
FOR /F "tokens=1,2,3" %%G IN ('Net Use^| Find "\\"') DO (
  ECHO.Unmapping %%I from drive letter %%H
  Net Use %%H /D > NUL
)

Was tut es? Lass uns das aufteilen

FOR/F "tokens = 1,2,3" %% G IN () DO () -> durchläuft die zwischen () und dem ersten, zweiten und dritten Wort definierte Menge (jedes Leerzeichen wird als Trennzeichen verwendet) werden als %% G, %% H bzw. %% I verfügbar.

('...') führt einen Befehl aus ... und übergibt die Ergebnisse an die FOR-Schleife

Net Use wird etwa so ausgeben:

New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
OK           M:        \\diskstation\music       Microsoft Windows Network
OK           P:        \\diskstation\home        Microsoft Windows Network
OK           V:        \\diskstation\video       Microsoft Windows Network
OK           X:        \\diskstation\photo       Microsoft Windows Network
The command completed successfully.

Diese Ausgabe wird dann an "Find.exe" (das Windows-Äquivalent zu "grep") weitergeleitet, das nach "\\" sucht. 

Das Rohrsymbol | wird mit ^ maskiert, damit cmd es nicht direkt ausführt. Die Ausgabe wird dann sein:

OK           M:        \\diskstation\music       Microsoft Windows Network
OK           P:        \\diskstation\home        Microsoft Windows Network
OK           V:        \\diskstation\video       Microsoft Windows Network
OK           X:        \\diskstation\photo       Microsoft Windows Network

Net Use/D löscht die Laufwerkszuordnung für die ausgewählte Zuordnung

3
MMusterd

Im Batch können Sie Code wie folgt schreiben:

@echo off
Net Use V: >nul 2>&1
if %errorlevel% equ 0 goto unmap

wenn V:\ nicht unter Windows 10 funktioniert, zeigt Net Use zusätzliche Informationen an, die ich jetzt mit >nul 2>&1 unterdrückt habe.

0
TarmoPikaro

Um die ursprüngliche Frage zu beantworten, können Sie prüfen, ob Z bereits zugeordnet ist, und dann einen anderen Laufwerkbuchstaben (z. B. y :) zuordnen. Dann dem neuen Pfad z zuordnen. 

if exist z:\ (
    for /F "tokens=1,2*" %%G in ('Net Use^|Find "\\"^|Find /I "z:"')  do ( Net Use y: %%H )
    Net Use z: /delete
)
Net Use z: \\path
0
jaylweb