cmd 창에서 매핑 된 네트워크 경로 결정


26

네트워크 드라이브가 있습니다- Z:\

전체 네트워크 경로를 아는 간단한 명령이 cmd있습니까?

즉, cmd표시 Z:\ABC\되면 출력 명령이 필요합니다.\\networkDrive\MappedDir\ABC

net use 괜찮지 만 현재 작업 디렉토리의 전체 경로를 얻고 싶습니다 (빠른 사본).

답변:


37

유형

net use

현재 연결된 모든 네트워크 드라이브가 표시됩니다.

OK           Z:        \\127.0.0.1\c$            Microsoft Windows Network

감사합니다. 현재 작업 디렉토리의 전체 경로를 얻는 방법을 알고 있습니까?
Ofiris

1
무엇에 대해 echo %cd%?
Endoro

@Endoro는 echo %cd%현재 디렉토리를 출력 ( Z:\ABC)가 아니라\\netDrive\ABC
Ofiris

나는 그것을 얻기 위해 할 수있는 간단한 명령 줄이 없다고 생각합니다. 배치 / powershell 스크립트를 작성하여 작성할 수는 있지만 작성하지는 않았습니다. superuser.com/questions/244579/… 에서 Icarus의 답변을 확인하십시오 . 필요에 따라 사용할 수 있습니다.
다리우스

현재 연결되지 않은 드라이브 (예 : 현재 연결이 끊긴 VPN을 통해)는 어떻습니까?

1

꽤 오래된 질문이지만 .. 패치의 실제 위치에 대한 UNC 경로를 사용하고 일부 작업을 수행하는 배치를 만들려고 할 때와 똑같은 대답을 찾고있었습니다 (따라서 다른 위치로 복사 및 붙여 넣기 / 폴더를 다시 시작하십시오).

나는 대답을 찾을 수 없었기 때문에 스스로 해결책을 찾았지만 매우 아름답 지 않고 확실히 간단한 명령이 아닙니다. 그러나 배치로 구현할 수 있습니다. CMD에서는 다음과 같습니다.

FOR /F "tokens=2" %i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
      SET cNetworkPath=%i)
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%

네 줄을 복사하고 (4+ 빈 줄) CMD에 붙여 넣어 복사 할 경로의 에코를 얻을 수 있습니다.

배치에서는 약간 다르게 사용합니다.

FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
      bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0

변수 % CD %는 현재 경로를 저장하며 드라이브 문자 만 필요하므로 NET USE의 FIND 명령으로 만 검색하십시오. "토큰 = 2"(또는 NET USE 출력에 따라 3)를 사용하면 % i 변수는 검색 한 드라이브 문자의 경로를 저장합니다. 그런 다음 두 번째 SET 명령은 네트워크 드라이브에서 탐색 한 폴더를 % CD : ~ 2 % (드라이브 문자를 잘라 내기 위해 오프셋 2)로 추가합니다.

배치에는 % ~ d0 또는 % ~ p0 변수를 사용합니다. % 0은 배치 자체의 전체 경로를 저장합니다 (예 : Z : \ temp \ test.bat; % ~ d0 = Z :; % ~ p0 = \ temp \; d = 드라이브, p = 경로, f = 전체 경로, n = name) 그렇지 않으면 CMD 명령과 유사합니다.


샘플이 흥미롭지 만 깨졌습니다. 예를 들어, (DO...)배치 배치 예제가 누락 SET ...되었으며 bOriginalPath어디에도 정의되지 않았습니다.
matt wilkie 22시 04 분

0

박쥐의 경로는 작업 디렉토리와 다를 수 있습니다. 따라서 박쥐 내부에 Mykorrhiza의 첫 번째 접근 방식이 필요합니다. 누락 된 상태 및 로컬 디스크 드라이브의 상황을 수용하려면 추가 검사가 필요합니다. 다음은 작동 코드입니다.

SET cNetworkPath=    
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
      SET cNetworkPath=%%i)
if "%cNetworkPath%" == "%CD:~0,2%" (
  FOR /F "tokens=3" %%i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
        SET cNetworkPath=%%i)
)
if "%cNetworkPath%" == "" set cNetworkPath=%CD:~0,2%
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%

위의 코드는 대부분의 경우 작동하지만 순 사용과 찾기가 작동하지 않는 경우가 있습니다. 다음은 최종적으로 테스트 된 작업 방법입니다.

SET cNetworkPath=
for /f "tokens=2" %%i in ('wmic path win32_mappedlogicaldisk get deviceid^, providername ^| findstr "%CD:~0,2%"') do (set cNetworkPath=%%i)
echo %cNetworkPath%

0

항상 프롬프트에 표시하려면

set prompt=$M$Q$S$P

UNC 경로와 드라이브 문자 기반 경로가 표시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.