Q. How do I automatically rename a mapped drive to the share name?
December 23, 2001
In tip 4600, I explained how Windows 2000 and Windows XP stores the information about a renamed mapped drive.
If you wish to map and automatically set My Computer to display ShareName (DriveLetter:), use RenShare.bat in a logon script. The syntax is:
RenShare DriveLetter: \ComputerNameShareName [Options]
where:
DriveLetter: | is the drive letter you are mapping. Previous mappings will be replaced. |
---|---|
\ComputerNameShareName | is the standard net use syntax. |
[Options] | are any additional net use switches that you want. |
Processing and Requirements
Windows NT, Windows 9X, Windows ME
Any previous DriveLetter: mapping is deleted and DriveLetter: is mapped to the \ComputerNameShareName [Options].
Windows 2000
The Windows 2000 Resource Kit REG.EXE program is required for writing ShareName to the registry.
The conversion of ShareName to Unicode takes a few seconds.
Windows XP
REG.EXE is installed when Windows XP is installed.
Windows 2000 and Windows XP
The client must have permission to write their own registry hive.
Any previous DriveLetter: mapping is deleted and DriveLetter: is mapped to the \ComputerNameShareName [Options].
Any trailing $ is omiited from the ShareName (DriveLetter:) display.
RenShare.bat contains:
@echo offsetlocalif {%2}
{} @echo Syntax: RenShare Drive: ServerShare [Options] &goto doneif not "%OS%"
"Windows_NT" goto W9xset drive=%1set drivel=%drive:~0,1%if "%drivel%:" NEQ "%drive%" @echo Syntax: RenShare Drive: ServerShare [Options] &goto doneset arg=%2set arg=%arg:"=%##set arg=%arg:$##=%set arg=%arg:##=%for /f "Tokens=2 Delims=" %%a in ('@echo %arg%') do set arg=%%afor /f "Tokens=5,6 Delims=[. " %%i in ('ver') do @set osv=%%i.%%jif "%osv:~0,3%" LSS "5.0" goto w9xif "%osv:~0,3%" GTR "5.0" goto wxpset uni=!21#23$24'27(28)29*2A+2B,2C-2D.2E/2F030131232333434535636737838939?3F@40A41B42C43D44E45F46G47H48I49J4AK4BL4CM4DN4EO4FP50Q51R52S53T54U55V56W57X58Y59Z5A[5B5C]5D_5F`60a61b62c63d64e65f66g67h68i69j6Ak6Bl6Cm6Dn6Eo6Fp70q71r72s73t74u75v76w77x78y79z7A{7B}7D~20~20set cachefill=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000##set cache=set /a cachecnt=0if exist %drive% net use %drive% /D>nul 2>&1net use %drive% %2 %3 %4 %5 %6 %7 %8>nul 2>&1set arg=%arg: =~%set file=%TEMP%Renuse.tmpset file="%file:"=%"if exist %file% del /q %file%for /l %%i in (0,3,249) do call :build %%iset /a cnt=0goto :parse:buildfor /f "Tokens=*" %%j in ('@echo %%uni:~%1^,3%%') do @echo %%j>>%file%goto :EOF:parsefor /f "Tokens=*" %%n in ('@echo %%arg:~%cnt%^,1%%') do set char=%%nif "%char%" EQU "ECHO is on." goto endset /a cnt=%cnt% + 1for /f "Tokens=*" %%t in ('findstr /B /L /C:%char% %file%') do set unit="%%t"if %unit% EQU "" set unit="~20"set cache=%cache%%unit:~2,2%00set /a cachecnt=%cachecnt% + 4set cachefill=%cachefill:0000##=##%if %cachecnt% GEQ 128 goto endgoto parse:wxpif exist %drive% net use %drive% /D>nul 2>&1set key=%2set key=HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2%key:=#%reg ADD %key% /v _LabelFromReg /d "%arg%" /f>nul 2>&1:wxpqryreg QUERY %key% /v _LabelFromReg>nul 2>&1if %ERRORLEVEL% EQU 1 goto :wxpqrynet use %drive% %2 %3 %4 %5 %6 %7 %8>nul 2>&1endlocalgoto :EOF:w9xif exist %1 net use %1 /D>nul 2>&1net use %1 %2 %3 %4 %5 %6 %7 %8>nul 2>&1endlocalgoto :EOF:endset cachefill=%cachefill:##=%set cache=%cache%%cachefill%:queryset key=HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints%drivel%_LabelFromRegreg QUERY %key% /v Cache>nul 2>&1if %ERRORLEVEL% EQU 1 goto :queryreg QUERY %key% /v Version>nul 2>&1if %ERRORLEVEL% EQU 1 goto :queryreg ADD %key% /v Cache /t REG_BINARY /d %cache% /f>nul 2>&1reg ADD %key% /v Version /t REG_DWORD /d 3 /f>nul 2>&1:doneEndlocal
See tip 4601 How do I rename the server / share information in a logon script?
About the Author
You May Also Like