Назад | Перейти на главную страницу

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

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

cd \\someServer\\someStuff\

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

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

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

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

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

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

Чуть более подробное объяснение pushd здесь: http://shortfastcode.blogspot.com/2010/05/how-to-deal-with-cmd-does-not-support.html

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

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

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

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

согласно @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

Разве не команда соединения работать здесь?

Эй, вот и попробовать ...

Перейти к эта страница и ищите "разрешить путь unc" ... это сработает?

Есть еще предыстория Вот и Вот

У вас есть дополнительная обратная косая черта в вашем UNC. Уместна двойная обратная косая черта ПЕРЕД "someServer". Двойная обратная косая черта перед "someStuff" должна быть одинарной обратной косой чертой, не так ли?

Поэтому постарайтесь

\\ someServer \ someStuff \ "

НЕ

\\ someServer \\ someStuff \ "

Вместо того

cd \\server_name\folder_name

использовать

pushd \\server_name\folder_name

..EXE path here..

popd

Ниже код полностью работал у меня, см. Пример

@echo off
echo "Email payment to prod payment sync program started"

pushd \\Server_name\it\0a. IT Projects\XYZ Project\Report Builds\Emailpayment to prod payment sync build

"\\Server_name\it\0a. IT Projects\XYZ Project\Report Builds\Emailpayment to prod payment sync build\xyz.exe" 
popd

pushd \\Server_name\it\0a. IT Projects\XYZ Project\Report Builds\Daily Invoice report build

"\\Server_name\it\0a. IT Projects\XYZ Project\Report Builds\Daily Invoice report build\XYZ1.exe" %-5

popd
echo "Daily invoice report program ended"