Determinar o caminho de rede mapeado na janela cmd


26

Eu tenho uma unidade de rede - mapeada para Z:\

Existe um comando simples para saber o caminho completo da rede cmd?

Ou seja, se cmdmostra Z:\ABC\, eu tinha como um comando para saída\\networkDrive\MappedDir\ABC

net use está bem, mas eu gostaria de obter o caminho completo do diretório de trabalho atual (para cópias rápidas).

Respostas:


37

Tipo

net use

O que mostra todas as unidades de rede atualmente conectadas.

OK           Z:        \\127.0.0.1\c$            Microsoft Windows Network

Obrigado, você conhece uma maneira de obter o caminho completo do diretório de trabalho atual?
Ofiris 27/05

1
Que tal echo %cd%?
Endoro 27/05

@Endoro, echo %cd%emite o diretório atual ( Z:\ABC) e não\\netDrive\ABC
Ofiris

Eu não acho que exista uma linha de comando simples que você possa fazer para obtê-la. Você pode escrever um script em lote / PowerShell para fazer isso, mas eu não tentei criar um. Verifique a resposta da Icarus em: superuser.com/questions/244579/… talvez você possa usá-la conforme sua necessidade.
Darius

E as unidades que não estão conectadas no momento (por exemplo, através de uma VPN que está desconectada no momento)?

1

É uma pergunta bastante antiga, mas ... Eu estava procurando a mesma resposta exata que tentava criar um lote que usasse o caminho UNC para o local real do patch e fizesse algumas coisas lá (apenas copie e cole em outro local / pasta e comece novamente).

Como não consegui encontrar uma resposta, encontrei uma solução, mas não é muito bonito e certamente não é um comando simples. Mas é possível implementar em lote. No CMD seria:

FOR /F "tokens=2" %i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
      SET cNetworkPath=%i)
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%

Você pode copiar as quatro linhas (melhor 4 + linha vazia) e colá-las no CMD para obter um eco imediato do caminho para copiá-lo.

No lote, você o usaria um pouco diferente:

FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
      bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0

A variável% CD% armazena o caminho atual e você precisa apenas da letra da unidade; portanto, procure somente isso com o comando FIND em NET USE. Com os "tokens = 2" (ou 3, dependendo da saída NET USE), a variável% i armazena o caminho para a letra da unidade que você procurou. Depois disso, o segundo comando SET adiciona as pastas que você navegou na unidade de rede com% CD: ~ 2% (deslocamento 2 para cortar a letra da unidade).

Para o lote, você usa as variáveis% ~ d0 ou% ~ p0. % 0 armazena o caminho completo do próprio lote (por exemplo, Z: \ temp \ test.bat;% ~ d0 = Z:;% ~ p0 = \ temp \; d = unidade, p = caminho, f = caminho completo, n = nome), caso contrário, é semelhante ao comando CMD.


a amostra é intrigante, mas quebrada. Por exemplo, o exemplo (DO...)em lote está ausente SET ...e bOriginalPathnão está definido em nenhum lugar.
22616 Matt Matter Wilson

0

O caminho do bastão pode ser diferente do diretório de trabalho. Portanto, precisamos da primeira abordagem de Mykorrhiza dentro de um bastão. Para acomodar a situação de falta de status e também unidades de disco locais, precisamos de verificações adicionais. A seguir está o código de trabalho:

SET cNetworkPath=    
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
      SET cNetworkPath=%%i)
if "%cNetworkPath%" == "%CD:~0,2%" (
  FOR /F "tokens=3" %%i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
        SET cNetworkPath=%%i)
)
if "%cNetworkPath%" == "" set cNetworkPath=%CD:~0,2%
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%

O código acima funciona na maioria dos casos, mas há casos em que o uso da rede e a localização não funcionam, o seguinte é o método de trabalho finalmente testado:

SET cNetworkPath=
for /f "tokens=2" %%i in ('wmic path win32_mappedlogicaldisk get deviceid^, providername ^| findstr "%CD:~0,2%"') do (set cNetworkPath=%%i)
echo %cNetworkPath%

0

Se você quiser exibi-lo sempre quando solicitado, poderá

set prompt=$M$Q$S$P

que mostrará o caminho UNC e o caminho baseado na letra da unidade.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.