how to get UNC path for mapped drive path

I've got x:\path\filename.ext. I want to resolve this to \\MyUnc\Network\path\filename.ext. Any thoughts on how to do this programatically? Thanks.

답변 (1개)

Prof. X
Prof. X 2022년 2월 21일
편집: Prof. X 2022년 2월 21일

1 개 추천

If on Windows, you can use system('net use'). I use the following function in one of my codes. I'm sure there is a more efficient way to code this but this works for me.
function MappedPath = findMappedDrive(DriveLetter)
% DriveLetter is just the letter that represents the drive without a
% colon, type char.
DriveLetter = [DriveLetter ':'];
system('net use >netuseRun.txt')
netuseOpen = fopen('netuseRun.txt');
tScan = textscan(netuseOpen,'%s','Delimiter','\n');
fclose(netuseOpen);
delete('netuseRun.txt');
str = string(tScan{:});
locate = contains(str,DriveLetter);
locatemd = strfind(str(locate),'\\');
conv = char(str(locate));
MappedPath = strtrim(conv(locatemd:end));
end
Sometimes there may be stuff that gets added at the end of the MappedPath like 'Windows Mapped Drive' so you may want to make a check using exist(MappedPath,'dir'). Hope this helps.

댓글 수: 2

Wolfie
Wolfie 2025년 9월 26일
편집: Wolfie 2025년 9월 26일
Taking inspiration from this, it could be sortened by using the 2nd output of system instead of a temp file, and then using regexp to extract the line after the desired drive letter
Your comment about removing additional stuff like "Windows Mapped Drive" or "Microsoft Windows Network" still applies.
driveLetter = 'X';
[~,netuse] = system( 'net use' );
mappedPath = strtrim( regexp( netuse, ['(?<=' driveLetter ':).+?^'], 'match', 'once', 'lineanchors' ) );
Prof. X
Prof. X 2025년 11월 11일
Nice! I've never seen lineanchors used

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Filename Construction에 대해 자세히 알아보기

태그

질문:

2018년 5월 3일

댓글:

2025년 11월 11일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by