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).

Ofiris
  • 1,897
  • 1
  • 15
  • 21

4 Answers4

38

Type

net use

Which will shows you all currently connected network drive.

OK           Z:        \\127.0.0.1\c$            Microsoft Windows Network
Darius
  • 5,336
  • 2
  • 29
  • 24
  • Thanks, do you know a way to get the full path of the current working directory? – Ofiris May 27 '13 at 11:23
  • 1
    What about `echo %cd%` ? – Endoro May 27 '13 at 14:53
  • @Endoro, `echo %cd%` outputs the current directory (`Z:\ABC`) and not `\\netDrive\ABC` – Ofiris May 30 '13 at 07: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: http://superuser.com/questions/244579/copy-unc-network-path-not-drive-letter-for-paths-on-mapped-drives-from-windows?rq=1 maybe you can use it to your need. – Darius Jun 06 '13 at 19:20
  • What about drives which are not currently connected (e.g., over a VPN which is currently disconnected)? –  Aug 11 '15 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%
Frank
  • 191
  • 4
  • 1
    Thanks Frank. I adapted your 2nd example into batch file that accepts the path to get UNC for as parameter, see https://stackoverflow.com/questions/21482825/find-unc-path-of-a-network-drive/67199050#67199050 – matt wilkie Apr 21 '21 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 '23 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.

Mykorrhiza
  • 11
  • 1
  • the sample is intriguing, but broken. For example the `(DO...)` in batch example is missing `SET ...`, and `bOriginalPath` is not defined anywhere. – matt wilkie Jul 14 '16 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.