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?

Foi útil?

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"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top