Talvez tente pushd \server\share
?
Diariamente, encontro-me no prompt de comando do Windows precisando acessar uma unidade de rede mapeada, mas desconectada. Eu ainda tenho que encontrar um comando que irá reconectar esta unidade sem unmapping e remapeamento (o que leva a um jogo de adivinhação de senhas, desde que eu não possuo esses computadores). Eu também gostaria de poder fazer o roteiro para que todas as noites o disco seja reconectado se ele estiver desconectado de alguma forma.
A solução mais rápida que tenho atualmente é:
start.
" para abrir o explorador, Eu sei que é um pequeno inconveniente, mas geralmente estou fazendo isso por meio de uma conexão lenta do VNC ou do PCAnywhere, onde fazer qualquer coisa através da GUI é horrível, então estou apenas imaginando se há uma solução melhor.
Tenho que iniciar o Windows 7 antes de poder executar o programa VPN que me conecta às unidades de rede da empresa. Portanto, minhas unidades de rede não se reconectam automaticamente, apenas abrindo-as no Windows Explorer as reconecta.
Eu fiz um pequeno arquivo de lote para iniciar a VPN, reconectar as unidades de rede e iniciar alguns aplicativos que sempre uso.
No meu arquivo em lote, tenho o seguinte:
REM Connect VPN here...
REM Opens an Explorer window looking at T: forcing a reconnect
Start /min explorer t:\
timeout 3 /nobreak
REM Kill all Explorer windows beginning with "T_drive" in the title
Taskkill /fi "windowtitle eq T_drive*"
REM Finish starting up here...
exit
O comando Taskkill /fi "windowtitle eq"
faz distinção entre maiúsculas e minúsculas!
crie um arquivo em lote (refreshletters.cmd) com esses comandos
( estes só funcionarão dentro de um arquivo de lote )
Testado no Win7 e no XP para atualizar as letras do driver 'Desconectado' e 'Indisponível' em uma janela do console (linha de comando).
@echo off
net use |FIND ":" > %temp%\used.txt
FOR /F " tokens=1,2,3 delims= " %%i in (%temp%\used.txt) do (
if %%i EQU Unavailable (
net use %%j %%k
echo Activated %%j
) ELSE (
if %%i EQU Disconnected (
pushd .
cd /d %%j
dir . %>nul
if NOT exist %%j\. (
net use %%j /del /y
net use %%j %%k
echo Remapped %%j
) else (
echo Fixed-up %%j
)
popd
) ELSE (
echo Checked %%j
)
)
)
Esta é provavelmente uma pergunta estúpida, mas supondo que sua unidade "desconectada" seja H :, você tentou apenas mudar diretamente para a unidade?
Funciona para mim no XPSP3:
C:\>net use
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
Disconnected H: \xxxxxx\wfaulk Microsoft Windows Network
OK \xxxxxxx\business Microsoft Windows Network
The command completed successfully.
C:\>h:
H:\>net use
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
OK H: \xxxxxx\wfaulk Microsoft Windows Network
OK \xxxxxxx\business Microsoft Windows Network
The command completed successfully.
Eu sei que você disse "net use" não funcionou para você - mas aqui está o que você poderia tentar.
Execute um arquivo em lotes com a opção net use / DELETE para remover as conexões existentes / persistentes E, em seguida, você pode usar net use com a opção / SAVECRED para reutilizar as credenciais passowd usadas no último logon bem-sucedido. Não tenho certeza se isso resolverá seu problema, mas vale a pena investigá-lo.
Eu tenho o mesmo problema com várias conexões e é intermitente. Quando eu reinicio o computador, às vezes a conexão é "boa" e às vezes não. Eu não tenho o problema de senha desde que eu estou em uma empresa LAN, mas ainda tenho o outro aspecto do problema.
Eu criei um arquivo de lote chamado ex.bat e o armazenei (junto com muitas outras coisas) em um diretório \ util que coloquei no meu caminho. Eu posso digitar "ex h:" e ele irá executar o Windows Explorer e configurá-lo para ir diretamente para a unidade h :. Aqui está o arquivo em lote:
start explorer /e,/select,%1
Isso funciona, com muito menos pressionamentos de tecla. Ou, se não funcionar primeiro, pressione a tecla Enter para abrir a pasta h: e exibir o conteúdo. Ou digite "ex h: \ sub" onde a subpasta "sub" existe.
Este problema parece ter ficado muito pior recentemente, talvez devido a um dos patches de segurança do Windows XP.
Outra coisa para tentar está no lado do servidor. Nos servidores Windows, a modificação de uma chave do Registro deve impedir que o servidor desconecte suas conexões em um tempo limite. Eu faço isso em praticamente todos os nossos servidores. O arquivo é:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"autodisconnect"=dword:ffffffff
Eu tive um problema semelhante e descobri que poderia forçar uma reconexão com um simples "dir x:" da linha de comando (onde X: era a unidade mapeada, mas desconectada.) Isso era de um sistema Server 2003 para unidades mapeadas Computadores XP e Win7.
Eu criei um arquivo de lote, wake_network_drives.bat, com estas duas linhas:
dir x:
dir z:
e defina uma tarefa agendada para executá-lo todas as noites antes do programa de backup que estava falhando porque as unidades estavam ocasionalmente mostrando como desconectadas.
Basta digitar:
NET USE H: \server\share
(onde H: é a sua letra de unidade, claro)
Digite 'NET /? USE 'para ver todas as opções que este comando lhe dá.
Se você não se opuser a manter essas senhas em texto simples em um lote, poderá fazer o script de uma exclusão e remapear credenciais.
net use H: /delete
net use H: \server\share /user:domain\user password /persistent:yes
Eu sei que ele não atende ao seu requisito de não excluir o compartilhamento, mas resolve a raiz do problema de ter que lembrar senhas.
TL; Resumo do DR: use net use
e if exist
Encontrei um problema relacionado ao criar um script de backup noturno. Ele tinha que verificar se um computador estava ligado (usando ping), enviar um pacote mágico para ligá-lo, se necessário (usando MC-WOL ), aguarde a inicialização do Windows, estabeleça uma conexão com um compartilhamento SMB e espere que ele esteja presente.
Enquanto outras respostas aqui são ótimas, eu não queria letras de drive mapeadas surgindo / saindo, ou desconectar qualquer coisa com a qual o usuário poderia estar trabalhando, nem ter as janelas do Explorer piscando. Ou seja, um objetivo era distração de usuário zero .
Este é um trecho de código que pode ser útil para você:
set TARGET_IP=192.168.1.3
set TARGET_PATH=\%TARGET_IP%\d$\backups
set ATTEMPTS=0
:LOOP
REM Give up eventually
if %ATTEMPTS% GEQ 200 goto NOJOY
REM Wait for IP connectivity to host, and/or burn up a couple seconds before retry
ping -n 1 -w 2000 %TARGET_IP% | find "TTL" > nul
if errorlevel 1 set /a ATTEMPTS+=1 & goto LOOP
REM See if we're already connected, and try to give it a kick
if exist %TARGET_PATH% goto CONNECTED
REM Try to reconnect
net use %TARGET_PATH% > nul
if errorlevel 1 set /a ATTEMPTS+=1 & goto LOOP
:CONNECTED
echo Connected
exit /b
:NOJOY
echo Couldn't connect
Se preferir, você pode substituir o endereço IP acima por um nome de host (por exemplo, server1
).
net use
é necessário caso não exista uma conexão existente. Eu corri para alguns casos de canto onde só parecia insuficiente para "acordar" o compartilhamento (por exemplo, se houve uma conexão anterior existente em um estado desconectado). Descobri que a diretiva if exists
tem um efeito semelhante às alternativas mencionadas em outras respostas (como pushd
, dir
, Explorer
, etc), mas parecia uma abordagem mais leve.
A resposta do StanZ funcionou para mim, mas eu tive que ser capaz de determinar programaticamente quaisquer unidades mapeadas sem um status de OK, já que os usuários em nosso domínio obtêm diferentes mapeamentos de unidade. Eu codifiquei aqui para executar como uma versão independente, que executa net use
antes e depois do código real, para que você possa ver os resultados, mas só precisa copiar a instrução FOR
(três linhas) em seu código para obter os resultados desejados.
@ECHO OFF
::
:: revision of answer from StanZ on superuser.com at the following url
:: https://superuser.com/questions/52595/can-a-mapped-network-drive-be-reconnected-from-the-command-line/367910#367910
:: https://superuser.com/a/367910
:: which resulted in my
::
:: DriveStatusOK.bat
:: iCharlieC
::
SETLOCAL ENABLEEXTENSIONS
::
:: you need only copy the one FOR statement (three lines)
:: to use in your own code
:: to force status of mapped network drives to OK
::
:: "tokens=1-2 delims=: " is used in the for statement
:: to output only the drive letter from the output of...
:: net use
:: is piped to the first findstr which outputs only lines with drive letters
:: then piped to another findstr to eliminate drives with a status of OK
:: then piped to another findstr to get lines that start with a status
:: -in other words, those lines that the first character is a letter-
:: -this due to the fact that in our domain we have a drive
:: that is mapped to a letter, but never has a status.
:: I do not know the reason for this,
:: but adding that last findstr prevents me from getting an error
:: from trying to execute a dir on a non-existant drive letter.-
:: then dir is executed on each drive letter (after appending ":\" to the letter)
:: and the output redirected to NUL
::
:: run net use before as a visual here
net use
::
FOR /F "tokens=1-2 delims=: " %%i in (
'net use ^| findstr ":" ^| findstr /i /v "^OK" ^| findstr /i "^[A-Z]"'
) do dir "%%j:" > NUL
::
:: run net use after "waking" drive(s)
net use
::
ENDLOCAL
Talvez uma pergunta antiga, mas ainda relevante em 2017 e no Windows 10, porque os compartilhamentos de rede geralmente não são reconectados ou conectados corretamente por janelas por diferentes motivos. Com base neste problema e na ausência de uma solução real praticável e completa, criei um projeto do Github que contém uma tarefa do Scheduler e uma VBS que resolve o problema simplesmente tentando reconectar as unidades após continuar ou fazer logon, se não estiver conectado ou on-line.
O script é totalmente configurável e pode ser configurado dependendo das necessidades do usuário real.