Para identificar a letra da unidade para a qual o compartilhamento está mapeado e desmapá-lo no momento:
@echo off
for /f "tokens=2" %%D in ('net use ^| find ":" ^| find "\server\share") do net use %%D /delete
Comentários:
-
^
é como \
no Unix –– transforma o caractere seguinte de especial para não-especial ou vice-versa. Usamos ^|
para que a interpretação dos caracteres |
seja adiada até que o comando dentro dos parênteses seja analisado.
-
%%D
é uma variável de índice de loop FOR
.
Você pode usar qualquer letra que desejar, mas, ao contrário das variáveis normais do Prompt de Comando do Windows,
- pode ser apenas uma única letra, por isso, não tente usar
%%DRV
e
- faz distinção entre maiúsculas e minúsculas.
- Eu incluí o
find ":"
porque, quando eu estava testando isso, recebi uma saída net use
parecida com
OK H: \WONDERLAND\HUMPTYDUMPTY
OK Q: \WONDERLAND\QUEENOFHEARTS
OK \WONDERLAND\CHESHIRECAT
Então, você precisa fazer algo para filtrar as linhas que não incluem uma letra de unidade.
- Como você deve saber (porque eu sugeri, acima),
FOR
é uma construção de loop.
Sua declaração (s) é executada uma vez para cada linha que sai do
net use ... | find
pipeline, com %%D
definido para a segunda cadeia (token) na linha.
Se você quiser fazer mais de um comando e / ou ser mais seletivo, faça isso:
for /f "tokens=2" %%D in ('net use ^| find ":" ^| find "\server\share") do (
...
if %%D==Z: (
...
) else (
...
)
...
)
Quer mais? Altere "tokens=2"
para "tokens=2,3"
e %%E
será definido para o terceiro token; isto é, o UNC ao qual a letra da unidade está mapeada.