Как вы справляетесь с «CMD не поддерживает UNC-пути в качестве текущих каталогов»?


24

Я пытаюсь изменить каталоги на файловый сервер, такой как:

cd \\someServer\\someStuff\

Однако я получаю следующую ошибку:

CMD не поддерживает пути UNC как текущие каталоги

Какие есть варианты для перехода в этот каталог?


Ответы:


34

Если вы рассматриваете сценарии его, это всегда полезно узнать о pushdи popdкомандах. Иногда вы не можете быть уверены, какие буквы дисков уже используются на компьютере, на котором будет запускаться скрипт, и вам просто нужно взять следующую доступную букву диска. Поскольку net useвам потребуется указать диск, вы можете просто использовать, pushd \\server\folderа затем, popdкогда вы закончите.


Если вы укажете '*' вместо буквы диска, net use будет использовать первую доступную проверку диска из ZA. поэтому «net use * \\ server \ share» без
привязки

Но тогда вы не знаете, какая буква диска была назначена для целей остальной части сценария.
tomfanning

@tomfanning Вы можете найти букву диска с помощью этого (wmic logicdisk get caption, имя провайдера, тип диска, имя_ообщения) из командной строки, а затем проанализируйте вывод в поисках вашего \\ servername \ sharename. serverfault.com/questions/62578/…
Крис Магнусон

1
@pk. Что если сценарий потерпел крах до того, как запустил ваш popd?
Pacerier

15

Или вы можете переключиться на PowerShell . Он имеет полную поддержку путей UNC.


За исключением случаев, когда explorer.exe содержит дескриптор файла, который вы пытаетесь удалить. Даже с закрытым окном проводника, я думаю, что провайдер PS FileSystem (при условии, что это провайдер), вероятно, использует explorer.exe под капотом. или вы говорите, что есть способ использовать UNC без провайдера?
JohnZaj

11

Вы можете использовать net useдля сопоставления сетевого диска путь UNC, а затем перейдите к подключенному диску.


2
Правда, это единственный способ сделать это из командной строки, но будьте осторожны в использовании этого для чего угодно, кроме одноразовых команд (то есть вещей, которые вы делаете только один раз), потому что в противном случае вы столкнетесь с проблемами, когда диск не подключен или сопоставлены, но не подключены, и несколько имен пользователей :(
Марк Хендерсон

1
Вы не можете перейти в этот каталог, но вы все равно можете использовать его в командах: dir \\ someserver \ stuff call \\ someserver \ stuff \ what.bat
Benoit

1
На самом деле, вы можете использовать \\ someserver \ share ... для этого вам просто необходим reg-hack :-)
Барт Сильверстрим,

@BartSilverstrim, как?
Pacerier


1

Помимо явного сопоставления диска, чтобы он cmdмог справиться, что может понадобиться и другим утилитам, вы также можете попробовать альтернативную командную оболочку, например PowerShell.


1

Это работало для меня в Win8x64:

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

Вы должны быть в состоянии сделать это и в HKCU, просто убедитесь, что вы вышли из системы и снова включились.


1

согласно @pk используйте pushd & popd, вот пример.

используйте pushd для создания временного виртуального диска и после этого выполните команду popd для удаления временного виртуального диска

: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

Не сработает ли здесь команда перехода ?


1
Не думаю, что соединение работает только для локальных каталогов.
Берземус

Это работает? Из статьи в Википедии: «Точки соединения могут ссылаться только на каталоги на локальном томе; точки соединения с удаленными общими папками не поддерживаются».
Питер Мортенсен

@#%!# вы правы. Я думал, что это было похоже на команду mount, забыл, что у меня была эта проблема, когда я изучал ее два года назад. Вздох Извините ...
Барт Сильверстрим

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.