Estou tentando executar um arquivo em lote de um compartilhamento de rede, mas continuo recebendo a seguinte mensagem: "Caminho UNC não é suportado. Padronizando para o diretório do Windows." O arquivo em lote está localizado em \\Server\Soft\WPX5\install.bat
. Enquanto conectado como administrador, na minha área de trabalho do Windows 7, eu navego \\Server\Soft\WP15\
e clico duas vezes em install.bat, quando obtenho a mensagem "Caminho UNC não é compatível". mensagem. Encontrei algumas sugestões online informando que a unidade de mapeamento não funcionará, mas usar um link simbólico resolverá esse problema, mas o link simbólico não funcionou para mim. Abaixo está o conteúdo do meu arquivo em lote, agradeceria qualquer ajuda que possa me ajudar a realizar o que estou tentando fazer. Basicamente, desejo executar o arquivo em lote do \\Server\Soft\WP15\install.bat
.
Conteúdo do arquivo em lote
mklink /d %userprofile%\Desktop\WP15 \\server\soft\WP15
\\server\soft\WP15\setup.exe
robocopy.exe "\\server\soft\WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s \\server\soft\WPX5\Custom\Migrate.reg
Além disso, como removo o link simbólico após a conclusão da instalação?
fonte
Respostas:
PUSHD e POPD devem ajudar no seu caso.
Digite
PUSHD /?
na linha de comando para obter mais informações.fonte
pushd %~dp0
Isso deve fazer com que ele mude o diretório para aquele que contém seu arquivo bat. O aviso ainda será impresso, mas deverá funcionar normalmente. Se o arquivo bat usa '% ~ dp0' em outro lugar, pode haver problemas com isso, nesse caso, você pode detectar se%~dp0
começa com '//' no início do arquivo bat e, se for assimpushd
, e depois execute o arquivo bat novamente, entãogoto :EOF
. Isso fará com que ele seja executado no diretório recém-mapeado.PUSHD
, execute o 2º script viaCMD /C
, e siga comPOPD
. O controle retornará ao script pai após aCMD /C
saída do script, mesmo que tenha sido encerrado por CTRL-C.Há uma configuração de registro para evitar esta verificação de segurança (use-a por sua própria conta e risco):
Observação: no Windows 10 versão 1803, a configuração parece estar localizada em HKLM: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor
fonte
Eu sinto que
cls
é a melhor resposta. Ele oculta a mensagem UNC antes que alguém possa vê-la. Combinei com um@pushd %~dp0
logo após para que parecesse abrir o script e mapear o local em uma única etapa, evitando assim mais problemas UNC.Notas:
pushd
irá alterar seu diretório de trabalho para a localização dos scripts na nova unidade mapeada.popd
no final, para limpar a unidade mapeada.fonte
popd
no final (Windows 7), caso contrário, as unidades mapeadas ficaram presas depois que a janela foi fechada.Basicamente, você não pode executá-lo de um caminho UNC sem ver essa mensagem.
O que normalmente faço é colocar um
CLS
no início do script para não ter que ver essa mensagem. Em seguida, especifique o caminho completo para os arquivos no compartilhamento de rede que você precisa usar.fonte
Eu precisava ser capaz de navegar apenas pelo Windows Explorer no compartilhamento do servidor e, em seguida, clicar duas vezes para iniciar o arquivo em lote. @dbenham me levou a uma solução mais fácil para meu cenário (sem
popd
preocupações):fonte
Em vez de iniciar o lote diretamente do explorer - crie um atalho para o lote e defina o diretório inicial nas propriedades do atalho para um caminho local como% TEMP% ou algo assim.
Para excluir o link simbólico, use o comando rmdir.
fonte
Corri para o mesmo problema recentemente trabalhando com um arquivo em lote em uma unidade de compartilhamento de rede no Windows 7.
Outra maneira que funcionou para mim foi mapear o servidor para uma unidade através do Windows Explorer: Ferramentas -> Mapear unidade de rede. Dê a ele uma letra de unidade e um caminho de pasta para \ seu servidor. Como trabalho com o compartilhamento de rede, muitas vezes o mapeamento para ele o torna mais conveniente e resolveu o erro “caminho UNC não é suportado”.
fonte
Minha situação é um pouco diferente. Estou executando um arquivo em lote na inicialização para distribuir a versão mais recente dos aplicativos de negócios internos.
Nesta situação, estou usando a chave de execução do Registro do Windows com a seguinte string
Isso executa dois comandos na inicialização na sequência correta. Primeiro copiando o arquivo em lote localmente para um diretório para o qual o usuário tenha permissão. Em seguida, executando o mesmo arquivo em lote. Posso criar um diretório local c: \ InternalApps e copiar todos os arquivos da rede.
Provavelmente é tarde demais para resolver a pergunta do autor da postagem original, mas pode ajudar outra pessoa.
fonte
Esta é a RegKey que usei:
fonte
Minha versão env windows10 2019 lts e eu adiciono esses dois dados binray, corrijo este erro
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
DisableUNCCheck value 1Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Command Processor
DisableUNCCheck value 1fonte
Este é um tópico muito antigo, mas eu ainda uso o Windows 7. :-)
Há um ponto que ninguém parece ter levado em consideração, o que provavelmente ajudaria os usuários do Windows 10 também.
Se as extensões de comando estiverem ativadas, o comando PUSHD aceita caminhos de rede além da letra e caminho normais da unidade.
Portanto, a resposta óbvia - e mais simples - pode ser habilitar extensões de comando no script de lote, se você pretende usar PUSHD. No mínimo, isso deve reduzir os problemas que você pode ter ao usar PUSHD com um caminho de rede.
fonte
Editar registros do Windows não vale a pena e não é seguro, use
Map network drive
e carregue o compartilhamento de rede como se ele fosse carregado de uma de suas unidades locais.fonte