"UNC 경로가 지원되지 않습니다"라는 메시지없이 네트워크 공유에서 배치 파일을 실행하는 방법은 무엇입니까?


87

네트워크 공유에서 배치 파일을 실행하려고하는데 "UNC 경로가 지원되지 않습니다. 기본값은 Windows 디렉토리입니다."라는 메시지가 계속 표시됩니다. 배치 파일은에 있습니다 \\Server\Soft\WPX5\install.bat. 관리자로 로그인 한 상태에서 Windows 7 데스크탑 \\Server\Soft\WP15\에서 install.bat 를 찾아 두 번 클릭하면 "UNC 경로가 지원되지 않습니다."라는 메시지가 표시됩니다. 메시지. 매핑 드라이브가 작동하지 않는다는 온라인 제안을 찾았지만 심볼릭 링크를 사용하면이 문제가 해결되지만 심볼릭 링크가 작동하지 않았습니다. 아래는 내 배치 파일 콘텐츠입니다. 내가하려는 작업을 수행하는 데 도움이 될 수있는 도움을 주시면 감사하겠습니다. 기본적으로 .NET에서 배치 파일을 실행할 수 있기를 원합니다 \\Server\Soft\WP15\install.bat.

배치 파일 내용

mklink /d %userprofile%\Desktop\WP15 \\server\soft\WP15
\\server\soft\WP15\setup.exe
robocopy.exe "\\server\soft\WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s \\server\soft\WPX5\Custom\Migrate.reg

또한 설치가 완료된 후 심볼릭 링크를 제거하려면 어떻게해야합니까?


2
몇 년 후,하지만 다른 사람에게 유용 할 수 있습니다. 심볼릭 링크를 만든 후 원래 경로를 계속 참조하는 이유는 무엇입니까? 심볼릭 링크의 요점은 대신 사용할 수있는 로컬 경로를 제공하는 것입니다. 예 : "\\ server \ soft \ WP15 \ setup.exe"라고 말하지 말고 "% userprofile % \ Desktop \ WP15 \ setup.exe"라고 말하세요
ToolmakerSteve

심각하게는 ServerFault.com 질문입니다
Junchen 리우

답변:


137

PUSHD 및 POPD는 귀하의 경우에 도움이 될 것입니다.

@echo off
:: Create a temporary drive letter mapped to your UNC root location
:: and effectively CD to that location
pushd \\server\soft

:: Do your work
WP15\setup.exe
robocopy.exe "WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s WPX5\Custom\Migrate.reg

:: Remove the temporary drive letter and return to your original location
popd

PUSHD /?자세한 내용은 명령 줄에서 입력 하십시오.


2
빠른 답변과 제안에 감사드립니다. 나는 당신의 제안이 효과가 있기를 바랐지만 불행히도 그것은 나를 위해 효과가 없었습니다. 동일한 메시지가 나타납니다. "... UNC 경로는 지원되지 않습니다. 기본값은 Windows 디렉토리입니다." 관리자 그룹의 구성원으로 로그인 한 상태에서 파일을 실행 했음에도 불구하고 사용자 계정 컨트롤 대화 상자에서 예 또는 아니요를 클릭했습니다.
Stew

26
@Stew .bat 파일의 시작 부분에 다음을 입력하십시오. pushd %~dp0그러면 디렉토리가 bat 파일이 포함 된 디렉토리로 변경됩니다. 여전히 경고를 인쇄하지만 평소대로 작동합니다. bat 파일이 다른 곳에서 '% ~ dp0'을 사용하는 경우 문제가있을 수 있습니다.이 경우 %~dp0bat 파일 시작 부분에서 '//'로 시작 하는지 감지 하고, 그렇다면 pushd다음을 실행할 수 있습니다. bat 파일을 다시 입력 한 다음 goto :EOF. 이렇게하면 새로 매핑 된 디렉토리에서 실행됩니다.
그랜트 피터스

cmd가 원격 컴퓨터 또는 로컬에서 실행됩니까?
Dingxin Xu

@DingxinXu-원격 코드가 로컬에서 실행됩니다. 원격 컴퓨터에서 코드를 실행하려면 PsExec 와 같은 것이 필요합니다 .
dbenham

3
@balki-예, 원격 명령을 다른 스크립트에 넣습니다. 그런 다음을 PUSHD통해 두 번째 스크립트를 실행하고 . 제어는 스크립트 가 종료 된 후 CTRL-C로 종료 된 경우에도 상위 스크립트로 돌아갑니다 . CMD /CPOPDCMD /C
dbenham

29

이 보안 검사를 방지하기 위한 레지스트리 설정 이 있습니다 (하지만 위험을 감수하고 사용).

레지스트리 경로 아래

   HKEY_CURRENT_USER
     \ Software
       \ Microsoft
         \ Command 프로세서

DisableUNCCheck REG_DWORD 값을 추가하고 값을 0 x 1 (Hex)로 설정합니다.

참고 : Windows 10 버전 1803에서 설정은 HKLM : HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor 아래에있는 것 같습니다.


1
이유는 모르겠지만 다음 경로에서 "명령 프로세서"폴더를 찾았습니다. HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor
aoh

감사합니다. 도움이됩니다. 그러나 Windows 10 1803에서는 @aoh가 지적했듯이 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor입니다.
Edwin Yip

그 다음 답변을 업데이트하겠습니다. 정확성에 감사드립니다
Vinzz 19

26

cls가장 좋은 답 이라고 생각 합니다. 누구나 볼 수 있기 전에 UNC 메시지를 숨 깁니다. @pushd %~dp0스크립트를 열고 위치를 한 번에 매핑하는 것처럼 보이도록 바로 뒤에 결합 하여 추가 UNC 문제를 방지했습니다.

cls
@pushd %~dp0
:::::::::::::::::::
:: your script code here
:::::::::::::::::::
@popd

메모:

pushd 새 매핑 된 드라이브의 스크립트 위치로 작업 디렉토리를 변경합니다.

popd 마지막에 매핑 된 드라이브를 정리합니다.


4
popd마지막에 필요했습니다 (Windows 7). 그렇지 않으면 창을 닫은 후 매핑 된 드라이브가 멈췄습니다.
Patrick

1
잘 작동합니다. 감사합니다.
Jonas_Hess jul.

1
Windows 10에서 작동해야하는 경우. 여전히 "명령 프롬프트"입니다.
Grallen

11

기본적으로 해당 메시지를 보지 않고 UNC 경로에서 실행할 수 없습니다.

내가 일반적으로하는 일은 CLS스크립트 맨 위에을 두는 것이므로 해당 메시지를 볼 필요가 없습니다. 그런 다음 사용해야하는 네트워크 공유에있는 파일의 전체 경로를 지정합니다.


1
감사합니다. 다른 해결책이 없다면 마지막 옵션으로 이것을 시도 할 것입니다.
Stew

@jameslr 대답은 작동하지만 일반적으로 기꺼이 수행하는 것보다 더 많은 작업 (입력)입니다. 따라서 오류를 제거하기 위해 화면을 지우는 것만으로도 충분합니다. :)
aphoria

8

Windows 탐색기 만 서버 공유를 탐색 한 다음 배치 파일을 두 번 클릭하여 실행할 수 있어야했습니다. @dbenham은 내 시나리오에 대한 더 쉬운 솔루션을 제공했습니다 ( popd걱정 없이 ).

:: Capture UNC or mapped-drive path script was launched from
set NetPath=%~dp0

:: Assumes that setup.exe is in the same UNC path
%NetPath%setup.exe

:: Note that NetPath has a trailing backslash ("\")
robocopy.exe "%NetPath%Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s %NetPath%..\WPX5\Custom\Migrate.reg

:: I am not sure if WPX5 was typo, so use ".." for parent directory
set NetPath=
pause

@ peter-mortensen, 첫 단어를 대문자로 쓰기 위해 스크립트의 주석을 4x 편집 했습니까? 편집 할 가치가 있습니까? 문장으로 만들기 위해 끝에 마침표를 두는 것은 어떨까요? 어떻습니까 : 그것은 단지 주석이기 때문에 더 명확한 이해를 위해 appreviations 및 변수 (또는 강조)를 제외하고 주석의 첫 번째 단어에 의도적으로 대문자를 사용하지 않습니다.
JAYRO-수염이 희끗 희끗 한

4

탐색기에서 직접 배치를 시작하는 대신 배치에 대한 바로 가기를 만들고 바로 가기 속성에서 시작 디렉터리를 % TEMP % 등의 로컬 경로로 설정합니다.

심볼릭 링크를 삭제하려면 rmdir 명령을 사용하십시오.


1
이것은 작동하지만 바로 가기에서 시작하려는 경우에만 가능합니다. 명령 줄에서 실행하거나 다른 배치 파일에서 호출하려는 경우에는 도움이되지 않습니다.
aphoria

2
다른 배치 또는 명령 줄에서 호출하려면 다음과 같이 호출 할 수 있습니다. start / d % TEMP % \\ Server \ Soft \ WP15 \ install.bat
jameslr

2

최근 Windows 7의 네트워크 공유 드라이브에서 배치 파일을 사용하여 동일한 문제가 발생했습니다.

나를 위해 일한 또 다른 방법은 Windows 탐색기를 통해 서버를 드라이브에 매핑하는 것입니다. 도구-> 네트워크 드라이브 매핑. \ yourserver에 대한 드라이브 문자와 폴더 경로를 지정하십시오. 네트워크 공유 작업을 자주하기 때문에 더 편리하게 사용할 수 있으며 "UNC 경로가 지원되지 않습니다."오류가 해결되었습니다.


2

제 상황은 조금 다릅니다. 최신 버전의 내부 비즈니스 응용 프로그램을 배포하기 위해 시작시 배치 파일을 실행하고 있습니다.

이 상황에서는 다음 문자열과 함께 Windows 레지스트리 실행 키를 사용하고 있습니다.

cmd /c copy \\serverName\SharedFolder\startup7.bat %USERPROFILE% & %USERPROFILE%\startup7.bat

시작시 올바른 순서로 두 개의 명령을 실행합니다. 먼저 배치 파일을 사용자가 권한이있는 디렉토리에 로컬로 복사합니다. 그런 다음 동일한 배치 파일을 실행합니다. 로컬 디렉터리 c : \ InternalApps를 만들고 네트워크에서 모든 파일을 복사 할 수 있습니다.

이것은 원래 포스터의 질문을 해결하기에는 너무 늦었을 수 있지만 다른 사람에게 도움이 될 수 있습니다.


1

이것은 내가 사용한 RegKey입니다.

Windows Registry Editor Version 5.00

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

0

내 env windows10 2019 lts 버전 이고이 두 개의 binray 데이터를 추가 하고이 오류를 수정합니다.

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command ProcessorDisableUNCCheck 값 1 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Command Processor DisableUNCCheck 값 1


0

이것은 매우 오래된 스레드이지만 여전히 Windows 7을 사용합니다. :-)

아무도 고려하지 않은 것으로 보이는 한 가지 점이 있으며 이는 아마도 Windows 10 사용자에게도 도움이 될 것입니다.

명령 확장이 활성화 된 경우 PUSHD 명령은 일반 드라이브 문자 및 경로 외에 네트워크 경로를 허용합니다.

따라서 PUSHD를 사용하려는 경우 분명하고 가장 간단한 대답은 배치 스크립트에서 명령 확장을 활성화하는 것입니다. 최소한 이것은 네트워크 경로에 PUSHD를 사용할 때 발생할 수있는 문제를 줄여야합니다.


-1

Windows 레지스트리를 편집하는 것은 가치가없고 안전하지도 않습니다. Map network drive마치 로컬 드라이브 중 하나에서로드 된 것처럼 네트워크 공유를 사용 하고로드합니다.

여기에 이미지 설명 입력


1
이것은 Kai의 대답 과 어떻게 다른 가요?
SomethingDark

눈치 채지 못했습니다. 스크린 샷이 수천 단어의 가치가있는 것일까 요?
Adham Sabry
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.