batch file - simple - Comprobación por lotes si existe unidad de red asignada
create cmd script windows (5)
Actualmente estoy escribiendo un script que debe asignar una unidad de red a la letra Z
, estoy usando el comando net use z: //path
, lo que ocurre es que si el usuario ya está usando esta letra no podré para mapearlo, hay alguna forma de verificar la existencia de esta unidad (z) y si existe para desmontarla y montarla en una letra diferente y seguir usando la unidad z
que necesito para mi script, esto es parte de una instalación, y debe estar en la unidad Z.
En lote puedes escribir código como este:
@echo off
net use V: >nul 2>&1
if %errorlevel% equ 0 goto unmap
si existe V:/
no funciona en Windows 10, también net use
muestra información adicional, ahora lo he eliminado usando >nul 2>&1
.
Otra forma posible podría ser:
net use Z:
if %errorlevel% EQU 0 net use Z: /delete
net use Z: //path
Para responder a la pregunta original, puede verificar si Z ya está asignada y luego volver a asignarla a una letra de unidad diferente (por ejemplo, y :), luego asignar z a la nueva ruta.
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
Puede verificar si la unidad está montada por IF EXIST Z:/
. Esto debería funcionar:
if exist z:/ (
net use z: /delete
)
net use z: //path
Uso el siguiente script para desasignar todas las unidades:
:: 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
)
¿Qué hace? Vamos a dividir esto
Las fichas FOR / F "= 1,2,3" %% G IN () DO () -> iterarán sobre el conjunto definido entre () y la primera, segunda y tercera palabra (cualquier espacio en blanco se usará como separador) estarán disponibles como %% G, %% H y %% I respectivamente.
(''...'') ejecutará un comando ... y pasará el (los) resultado (s) al bucle FOR
El uso neto producirá algo como esto:
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.
Esta salida se canaliza a Find.exe (el equivalente de Windows a grep) que busca "//".
El símbolo de la tubería | se escapa usando ^ por lo que cmd no lo ejecuta directamente. La salida será entonces:
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 eliminará la asignación de unidades para la asignación seleccionada