Cmd exe не поддерживает пути unc по умолчанию выбрана системная папка windows

Увидеть такое сообщение можно при попытке запуска bat или cmd файла с сетевого ресурса. Всё дело в том, что CMD.EXE проверяет, используется ли имя UNC для текущего каталога и считается, что имя UNC может вызвать проблемы с дочерними процессами, запущенными с этой же консоли при выходе из консоли или остановке (об этом написано на сайте Microsoft). UNC (Universal Naming Convention) — это соглашение об именовании файлов и других ресурсов, дающее машинонезависимое определение местоположения ресурса, т.е. описание пути к файлу или папке с полным указанием имени сервера и имени сетевого ресурса.

Для того, чтобы запретить CMD.EXE проверять UNC имена и запускать скрипт без вопросов, нужно сделать следующее:

Способ 1. Запретить проверять путь UNC через редактор реестра.

Запустить regedit.exe (нажать «Пуск», в поле «Найти программы и файлы» написать «regedit.exe»).

Открыть ветку реестра: HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor

Создать параметр типа DWORD (число) с наименованием DisableUNCCheck и установить его значение равное 1.

Возможные значения этого параметра:

  • 0 — выводить предупреждающее сообщение и устанавливать текущий путь равный системной папке Windows.
  • 1 — не выводить предупреждающее сообщение и пытаться выставить текущий путь равный UNC пути.

Способ 2. Выполнить команду, создающую параметр DisableUNCCheck

Нажать «Пуск» -> «Выполнить» или запустить «Командную строку» и выполнить команду:

reg add «HKCU\Software\Microsoft\Command Processor» /v DisableUNCCheck /t REG_DWORD /d 1

После выполнения этой команды создастся параметр как и в способе 1-м.

Теперь можно запускать bat или cmd скрипты из сетевого пути.

Способ 3. Подключить сетевой путь как сетевой диск

Для этого можно использовать такой код bat-файла с автоматическим подбором первой свободной буквы для сетевого диска:

set netdisk=
for %%x IN (D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
  net use %%x: <Путь_к_сетевой_папке> /persistent:no && set netdisk=%%x
  if not "!netdisk!"=="" goto next
)
:next
%netdisk%:
...
dir
...
net use %netdisk%: /d

<Путь_к_сетевой_папке> нужно поменять на свой путь с указанием имени компьютера и сетевого ресурса.

После подключения сетевого диска я написал команду dir, чтобы убедиться, что путь поменялся, а вам нужно написать свои команды, которые будут выполняться для сетевого ресурса. После выполнения всех нужных действий, сетевой диск отключается командой net use %netdisk%: /d

If you try to cd to a network drive from the Windows CMD, you will get the following error:

CMD does not support UNC paths as current directories

Instead of cd command in CMD you can use a pushd command, that creates a drive mapping to the network share and then changes into a path relative to the share it creates.

In PowerShell you should be able to cd to a network drive without any errors as it natively supports UNC paths and the cd command.

In this small note i am showing how to cd to a network drive from the Windows CMD and fix the error: “CMD does not support UNC paths as current directories“.

‘CD’ to Network Drive

Change a directory to a network drive in CMD:

C:\> pushd \\path\to\share

Change a directory to a network drive in PowerShell:

PS C:\> cd \\path\to\share

Was it useful? Share this post with the world!

i was trying to copy a files modified today from one shared drive another shared drive.
but when i execute the batch file, it displays the following error.

cmd does not support unc paths as current directories

the script is as below

@echo off


Set PhotosrcPath=\\hqcp-appsvr01\Files\ApplicationDocuments\AppDocs\49\PHOTO\
Set PhotodestPath=\\hqcp-appsvr02\Files\ApplicationDocuments\AppDocs\49\PHOTO\

::Copy photoFiles from server1 to server2 Made Or Modified Today


@echo off

set source=%d%%PhotosrcPath%
set dest=%d%%PhotodestPath%


pushd "%source%"
set t=%date:~4%
echo %t%
for /f %%a in ('dir /b /a-d /o-d') do call :PROCESS "%%a"
goto :eof
popd

:PROCESS
for /f %%j in ('echo %~t1') do set d=%%j
if "%d%"=="%t%" Xcopy /y %1 "%dest%"
goto :eof

asked Jun 30, 2014 at 4:05

subash's user avatar

6

net use X: \\hqcp-appsvr01\Files\ApplicationDocuments\AppDocs\49\PHOTO
net use Y: \\hqcp-appsvr02\Files\ApplicationDocuments\AppDocs\49\PHOTO

::Copy photoFiles from server1 to server2 Made Or Modified Today

@echo off

set source=X:\
set dest=Y:\

pushd "%source%"
set t=%date:~4%
echo %t%
for /f %%a in ('dir /b /a-d /o-d') do call :PROCESS "%%a"
popd
net use Y: /d /y
net use X: /d /y
goto :eof

:PROCESS
for /f %%j in ('echo %~t1') do set d=%%j
if "%d%"=="%t%" Xcopy /y %1 "%dest%"
goto :eof

Something like that might work. Look up NET USE for more information.

I’m curious why you aren’t just using XCOPY — I would think that the /D command might do what you need. I would throw in a /M too.

xcopy \\hqcp-appsvr01\Files\ApplicationDocuments\AppDocs\49\PHOTO\*.* \\hqcp-appsvr02\Files\ApplicationDocuments\AppDocs\49\PHOTO\*.*  /y /d /m

answered Jun 30, 2014 at 4:38

Bob's user avatar

BobBob

1,0458 silver badges10 bronze badges

1

There is no reason to use pushd. The following modification of the for loop may be enough.

for /f %%a in ('dir "%source%" /b /a-d /o-d') do call :PROCESS "%%a"

answered Jun 30, 2014 at 4:52

Benilda Key's user avatar

Benilda KeyBenilda Key

2,8461 gold badge22 silver badges34 bronze badges

1

cmd: UNC-путь

CMD.EXE по умолчанию  не  поддерживает  UNC-пути.  Если попытаться выполнить команду командного процессора, в случае, если текущий путь -UNC, то в консоль выводится информация:

«Указанный путь был использован при запуске CMD.EXE в  качестве текущей папки. CMD.EXE не поддерживает пути UNC. По умолчанию выбрана системная папка Windows. Ошибка в синтаксисе команды.»

или:

     «CMD.EXE was started with the above path as the current  directory. UNC paths are not supported. Defaulting to Windows directory.»

   Параметр  «DisableUNCCheck»  позволяет  решить  эту  проблему.  Значение параметра может быть одним из следующих:
     0 — выводить предупреждающее сообщение и устанавливать текущий путь
         равный системной папке Windows.
     1 — не выводить предупреждающее сообщение и пытаться выставить текущий
         путь равный UNC пути.

   По умолчанию в Windows параметр равен 0.
   Рекомендуемое значение 1.

   Подробнее: http://www.winguides.com/registry/display.php/1247/ или в статье Microsoft — Q156276

PS: а вот так можно добавить этот ключ из командной строки или скрипта

reg add «HKCU\Software\Microsoft\Command Processor» /v DisableUNCCheck /t REG_DWORD /d 1

I am attempting to change directories to a file server such as:

cd \\someServer\\someStuff\

However, I get the following error:

CMD does not support UNC paths as
current directories

What are my options to navigate to that directory?

asked Aug 4, 2009 at 23:16

Ray's user avatar

1

If you’re considering scripting it, it’s always helpful to learn about the pushd and popd commands. Sometimes you can’t be sure what drives letters are already used on the machine that the script will run on and you simply need to take the next available drive letter. Since net use will require you to specify the drive, you can simply use pushd \\server\folder and then popd when you’re finished.

jscott's user avatar

jscott

24.5k8 gold badges79 silver badges100 bronze badges

answered Aug 5, 2009 at 2:12

pk.'s user avatar

pk.pk.

6,4612 gold badges42 silver badges63 bronze badges

5

Or you could switch your shell to PowerShell. It has complete support for UNC paths.

Peter Mortensen's user avatar

answered Aug 5, 2009 at 8:07

Berzemus's user avatar

BerzemusBerzemus

1,1923 gold badges11 silver badges19 bronze badges

1

You could use net use to map a network drive to a UNC path and then browse to the mapped drive.

bluish's user avatar

answered Aug 4, 2009 at 23:19

Sam Cogan's user avatar

Sam CoganSam Cogan

38.8k6 gold badges79 silver badges115 bronze badges

4

This worked for me in Win8x64:

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

You should be able to do this in HKCU as well, just make sure you log off and back on again.

answered Nov 24, 2015 at 19:17

JohnZaj's user avatar

answered May 19, 2010 at 8:36

Daniel's user avatar

DanielDaniel

1213 bronze badges

Pushd Works, but …

I have been using

pushd "%~dp0\"

at the start of cmd files for longer than I can remember, always with a complementary

popd 

at the end of the file. Until recently this was working, when:

  1. My script was pausing and I was using ^C to exit.
  2. I did this about 24 times over several days of testing on a remote desktop.

Then I got the vague error, if not completely misleading error:

CMD does not support UNC paths as current directories.

Finally, I thought to try

NET USE

To my surprise, I had used all of the drive letters up. After I did

NET USE * /D

I was happy again knowing I had not lost my mind.

Here is my standard cmd prolog:

SETLOCAL EnableExtensions
rem pushd handles Windows dumbness when the command directory is a UNC
rem and we want to use it as the current directory. e.g. click launch a cmd file on the network.
pushd "%~dp0\"

answered Oct 27, 2020 at 23:19

Andrew Dennison's user avatar

As well as explicitly mapping a drive so that cmd can cope, which might be needed by other utilities too, you could also try an alternative command shell like PowerShell.

answered Aug 4, 2009 at 23:47

David Spillett's user avatar

as per @pk use pushd & popd, here is an example.

use pushd to create a temporary virtual drive
and after done do a popd to delete the temporary virtual drive

: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

answered Apr 4, 2018 at 10:05

AquaAlex's user avatar

AquaAlexAquaAlex

1712 silver badges9 bronze badges

Instead of

cd \\server_name\folder_name

use

pushd \\server_name\folder_name

..EXE path here..

popd

Below code completely worked for me, see the example

@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"

Swisstone's user avatar

Swisstone

6,7507 gold badges22 silver badges32 bronze badges

answered Aug 4, 2020 at 8:29

ravi kalkote's user avatar

Hey, here’s one to try…

Go to this page and search for «allow unc path»…will that work?

There’s more background here and here

answered Aug 5, 2009 at 11:58

Bart Silverstrim's user avatar

Bart SilverstrimBart Silverstrim

31.2k9 gold badges67 silver badges88 bronze badges

1

You have an extra backslash in your UNC.
The double backslash BEFORE «someServer» IS appropriate.
The double backslash before «someStuff» should be a single backslash, no?

So, try

\\someServer\someStuff\»

NOT

\\someServer\\someStuff\»

answered Jan 9, 2020 at 18:27

HumbleStudent's user avatar

This works for me:

set NetworkFolder=\\server\folder
dir %NetworkFolder%\subfolder

answered Jun 23, 2021 at 12:46

Alex Wilson's user avatar

You must log in to answer this question.

Not the answer you’re looking for? Browse other questions tagged

.

  • Cmd connect to windows server
  • Cmd команды для администратора windows 10
  • Cmake windows how to build
  • Cmd изменить пароль пользователя windows
  • Cmd в режиме администратора windows 10