¿Cómo puedo obtener una lista de unidades de un archivo por lotes?
-
20-08-2019 - |
Pregunta
Estoy tratando de obtener una lista de todas mis unidades asignadas para una actualización del sistema y me gustaría obtener esta información a través de un archivo por lotes. ¿Cómo puedo hacer esto?
Para puntos de bonificación: ¿Cómo puedo escribir la asignación de estas unidades en el nuevo servidor?
Solución
La lista de asignaciones actuales será devuelta por
net use
La transferencia funcionaría así (por diversión 1 , hagamos eso en un script por lotes en lugar de VBScript):
@echo off
setlocal EnableDelayedExpansion
set letter=.
set uncpath=.
set colon=.
for /f "delims=" %%l in ('net use') do @(
for /f "tokens=2" %%t in ("%%l") do @set letter=%%t
for /f "tokens=3" %%t in ("%%l") do @set uncpath=%%t
set colon=!letter:~1,1!
if "!colon!" EQU ":" (
echo if exist !letter! net use !letter! /delete
echo net use !letter! !uncpath! /persistent:yes
)
)
endlocal
la salida es algo como esto:
if exist M: net use M: /delete
net use M: \\someserver\someshare /persistent:yes
if exist N: net use N: /delete
net use N: \\otherserver\othershare /persistent:yes
Simplemente almacene eso en un archivo por lotes y estará listo para comenzar.
1 En realidad, "diversión" No es la palabra correcta aquí. ;-)
Otros consejos
Para enumerar las unidades asignadas
Net Use
Para asignar una nueva unidad
Net Use G: \\Server\Path
Puedes hacer esto usando vbscript
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives
For Each objDrive in colDrives
Wscript.Echo "Drive letter: " & objDrive.DriveLetter
Next
Y puede asignar unidades de red con
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive "G:", "\\Server\Path"