28

I have a network drive - mapped to Z:\

Is there a simple command to know the full network path from cmd ?

I.e. if cmd shows Z:\ABC\, I had like a command to output \\networkDrive\MappedDir\ABC

net use is fine but I would like to get the full path of the current working directory (for quick copies).

4 Answers 4

38

Type

net use

Which will shows you all currently connected network drive.

OK           Z:        \\127.0.0.1\c$            Microsoft Windows Network
5
  • Thanks, do you know a way to get the full path of the current working directory?
    – Ofiris
    May 27, 2013 at 11:23
  • 1
    What about echo %cd% ?
    – Endoro
    May 27, 2013 at 14:53
  • @Endoro, echo %cd% outputs the current directory (Z:\ABC) and not \\netDrive\ABC
    – Ofiris
    May 30, 2013 at 7:59
  • I don't think there is a simple command line you can do to get it. You may be able to write a batch / powershell script to do it, but I haven't tried to make one. Check the answer from Icarus on: superuser.com/questions/244579/… maybe you can use it to your need.
    – Darius
    Jun 6, 2013 at 19:20
  • What about drives which are not currently connected (e.g., over a VPN which is currently disconnected)?
    – user49214
    Aug 11, 2015 at 16:59
3

The path of the bat may be different from the working directory. So we need Mykorrhiza's first approach inside a bat. To accommodate the situation of missing status and also local disk drives, we need additional checks. The following is the working code:

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%

The above code works in most cases, but there are cases where the net use and the find do not work, the following is the finally tested work method:

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%
2
  • 1
    Thanks Frank. I adapted your 2nd example into batch file that accepts the path to get UNC for as parameter, see stackoverflow.com/questions/21482825/… Apr 21, 2021 at 15:42
  • Thanks Frank, that was really helpful! I ended up adding setlocal enabledelayedexpansion and pushd %~dp0 before solution 2, and used echo !cNetworkPath! instead.
    – theSparky
    Aug 22, 2023 at 15:09
1

It's quite an old question but.. I was looking for the exact same answer as I was trying to create a batch that will use the UNC path to the actual location of the patch and do some things there (so only copy&paste to another location/folder and start again).

As I couldn't find an answer I found a solution myself, but it's not very beautiful and certainly not a simple command. But it's possible to implement in batch. On CMD it would be:

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

You can copy the four lines (better 4+empty line) and paste them into CMD to get an imidiate echo of the path to copy it.

In batch you would use it a bit differently:

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

The variable %CD% stores the current path and you need only the drive letter so you only search for that with the FIND command in NET USE. With the "tokens=2" (or 3, depending on NET USE output) the %i variable stores the path to the drive letter you searched for. After that the second SET command adds the folders you browsed on the network drive with %CD:~2% (offset 2 to cut off the drive letter).

For batch you use the %~d0 or %~p0 variables. %0 stores the full path of the batch itself (e. g. Z:\temp\test.bat ; %~d0 = Z: ; %~p0 = \temp\ ; d = drive, p = path, f = full path, n = name) otherwise it's similar to the CMD command.

1
  • the sample is intriguing, but broken. For example the (DO...) in batch example is missing SET ..., and bOriginalPath is not defined anywhere. Jul 14, 2016 at 22:04
1

If you want it to always display it at your prompt, you could

set prompt=$M$Q$S$P

which will show you your UNC path and your drive letter based path.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .