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


24

Estou tentando alterar diretórios para um servidor de arquivos, como:

cd \\someServer\\someStuff\

No entanto, eu recebo o seguinte erro:

O CMD não suporta caminhos UNC como diretórios atuais

Quais são as minhas opções para navegar para esse diretório?


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.


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.


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.


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.


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.


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

0

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


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

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.