Como posso obter uma lista de unidades a partir de um arquivo de lote?
-
20-08-2019 - |
Pergunta
Eu estou tentando obter uma lista de todas as minhas unidades mapeadas para uma atualização do sistema e gostaria de obter esta informação através de um arquivo em lotes. Como posso fazer isso?
Para Os pontos de bónus: Como posso roteiro o mapeamento dessas unidades no novo servidor?
Solução
A lista de mapeamentos atuais será devolvido pelo
net use
A transferência funcionaria como este (para o divertimento 1 disso, vamos fazer isso no script em lotes, em vez 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
saída é algo como isto:
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
Apenas loja que em um arquivo de lote e você é bom para ir.
1 Na verdade, "diversão" não é a palavra certa aqui. ; -)
Outras dicas
Para listar as unidades mapeadas
Net Use
Para mapear uma nova unidade
Net Use G: \\Server\Path
Você pode fazer isso usando vbscript
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives
For Each objDrive in colDrives
Wscript.Echo "Drive letter: " & objDrive.DriveLetter
Next
E você pode mapear unidades de rede com
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive "G:", "\\Server\Path"