Como você lida com “o CMD não suporta caminhos UNC como diretórios atuais”?

Respostas:

34

Se você está pensando em criar um script, é sempre útil aprender sobre os comandos pushde popd. Às vezes, você não pode ter certeza de quais letras de unidades já estão sendo usadas na máquina em que o script será executado e você simplesmente precisa levar a próxima letra de unidade disponível. Como net useexigirá que você especifique a unidade, você pode simplesmente usar pushd \\server\foldere popdquando terminar.

pk.
fonte
Se você especificar '*' em vez de uma letra de unidade, o uso líquido utilizará a primeira verificação de unidade disponível no ZA. so 'net use * \\ server \ share' sem Z: unidade mapeada seria mapear \\ server \ share a Z:
Zypher
Mas você não sabe qual letra de unidade foi mapeada para o restante do script.
Tomfanning 5/08/09
@tomfanning Você pode encontrar a letra da unidade usando este (disco lógico wmic obter legenda, nome do usuário, tipo de unidade, nome do volume) no prompt de comando e depois analisar a saída procurando seu \\ servername \ sharename. serverfault.com/questions/62578/…
Chris Magnuson
1
@pk. E se o script falhar antes de executar o seu popd?
Pacerier
15

Ou você pode mudar seu shell para o PowerShell . Possui suporte completo para caminhos UNC.

Berzemus
fonte
Exceto quando explorer.exe possui um identificador no arquivo que você está tentando excluir. Mesmo com a janela do explorer fechada, acho que o provedor PS FileSystem (supondo que seja um provedor) provavelmente usa o explorer.exe sob o capô. ou você está dizendo que existe uma maneira de usar o UNC sem o provedor?
JohnZaj
11

Você pode usar net usepara mapear uma unidade de rede para um caminho UNC e, em seguida, procurar a unidade mapeada.

Sam Cogan
fonte
2
É verdade que essa é a única maneira de fazê-lo na linha de comando, mas tenha cuidado ao usá-lo para qualquer coisa, exceto comandos descartáveis ​​(ou seja, coisas que você faz apenas uma vez), porque, caso contrário, você terá problemas com a unidade não sendo mapeada ou sendo mapeados, mas não conectado, e vários nomes de usuário :(
Mark Henderson
1
Você não pode alterar a esse diretório, mas você ainda pode usá-lo em comandos: dir \\ someserver \ chamada coisas \\ someserver \ coisas \ whatever.bat
Benoit
1
Na verdade, você pode ser capaz de usar \\ someserver \ share ... você só precisa o hack reg para fazê-lo :-)
Bart Silverstrim
@BartSilverstrim, Como?
Pacerier
1

Além de mapear explicitamente uma unidade para que ela cmdpossa lidar, o que também pode ser necessário por outros utilitários, você também pode tentar um shell de comando alternativo como o PowerShell.

David Spillett
fonte
1

Isso funcionou para mim no Win8x64:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001

Você também deve fazer isso no HKCU, apenas faça logoff e logon novamente.

JohnZaj
fonte
1

conforme @pk use pushd & popd, aqui está um exemplo.

use pushd para criar uma unidade virtual temporária e depois faça um popd para excluir a unidade virtual temporária

:selectFolder
REM Confirm which Folder structure
set /p location="Delete files for which QA environment: (P)retoria, (C)ape, (L)uanda or (Q)uit? (C/L/P/Q)"
REM  I option allows for upper and lower case
if /I "%location%"=="C" set folder="\\Tfwcqa\tfwcqa\EORDERS"
if /I "%location%"=="L" set folder="\\Tfluaqa\tfluaqa\EORDERS"
if /I "%location%"=="P" set folder="\\Tfptaqa\tfptaqa\EORDERS"
if /I "%location%"=="Q" goto endBatch

REM you can not cd to a network drive so we use pushd to create a temporary virtual drive
REM cd /d %folder%
pushd %folder%

DIR /S

REM popd deletes the temporary virtual drive
popd
AquaAlex
fonte
0

O comando de junção não funcionaria aqui?

Bart Silverstrim
fonte
1
Não pense assim, a junção funciona apenas para diretórios locais.
Berzemus 5/08/09
Funciona? No artigo da Wikipedia: "Os pontos de junção podem ser vinculados apenas a diretórios em um volume local; os pontos de junção para compartilhamentos remotos não são suportados".
5118 Peter Mortensen
@#%!# você está certo. Eu estava pensando que era como um comando de montagem, esqueci que tinha esse problema quando o examinei, dois anos atrás. suspiro Desculpe ...
Bart Silverstrim
0

Ei, aqui está uma para tentar ...

Vá para esta página e procure por "permitir caminho não definido" ... isso funcionará?

Há mais informações aqui e aqui

Bart Silverstrim
fonte
A pesquisa não obteve resultados.
Pacerier