답변:
유형
net use
현재 연결된 모든 네트워크 드라이브가 표시됩니다.
OK Z: \\127.0.0.1\c$ Microsoft Windows Network
echo %cd%
?
echo %cd%
현재 디렉토리를 출력 ( Z:\ABC
)가 아니라\\netDrive\ABC
꽤 오래된 질문이지만 .. 패치의 실제 위치에 대한 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
어디에도 정의되지 않았습니다.
박쥐의 경로는 작업 디렉토리와 다를 수 있습니다. 따라서 박쥐 내부에 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%