Определите сопоставленный сетевой путь из окна cmd

26

У меня есть сетевой диск - сопоставлен с Z:\

Есть ли простая команда, чтобы узнать полный сетевой путь cmd?

Т.е. если cmdпоказывает Z:\ABC\, у меня была команда для вывода\\networkDrive\MappedDir\ABC

net use это хорошо, но я хотел бы получить полный путь текущего рабочего каталога (для быстрых копий).

Ofiris
источник

Ответы:

37

Тип

net use

Который покажет вам все подключенные в данный момент сетевые диски.

OK           Z:        \\127.0.0.1\c$            Microsoft Windows Network
Darius
источник
Спасибо, вы знаете способ получить полный путь к текущему рабочему каталогу?
Офирис
1
Как насчет echo %cd%?
Эндоро
@Endoro echo %cd%выводит текущий каталог ( Z:\ABC), а не\\netDrive\ABC
Ofiris
Я не думаю, что есть простая командная строка, которую вы можете сделать, чтобы получить ее. Возможно, вам удастся написать пакетный / PowerShell-скрипт, но я не пытался его создать. Проверьте ответ от Icarus на: superuser.com/questions/244579/… возможно, вы сможете использовать его для своих нужд.
Дарий
А как насчет дисков, которые в данный момент не подключены (например, через VPN, которая в данный момент отключена)?
1

Это довольно старый вопрос, но ... я искал тот же самый ответ, когда пытался создать пакет, который будет использовать 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. С "tokens = 2" (или 3, в зависимости от вывода NET USE) переменная% i сохраняет путь к искомой букве диска. После этого вторая команда SET добавляет папки, которые вы просматривали на сетевом диске, с% CD: ~ 2% (смещение 2, чтобы обрезать букву диска).

Для пакетной обработки вы используете переменные% ~ d0 или% ~ p0. % 0 хранит полный путь самого пакета (например, Z: \ temp \ test.bat;% ~ d0 = Z:;% ~ p0 = \ temp \; d = диск, p = путь, f = полный путь, n = имя) в противном случае это похоже на команду CMD.

Mykorrhiza
источник
образец интригующий, но сломанный. Например, пример (DO...)в пакете отсутствует SET ...и bOriginalPathнигде не определен.
Мэтт Уилки
0

Путь летучей мыши может отличаться от рабочего каталога. Итак, нам нужен первый подход Микорризы внутри летучей мыши. Чтобы учесть ситуацию отсутствия статуса, а также локальных дисков, нам нужны дополнительные проверки. Ниже приведен рабочий код:

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%
Фрэнк
источник
0

Если вы хотите, чтобы он всегда отображался по вашему запросу, вы можете

set prompt=$M$Q$S$P

который покажет вам ваш UNC-путь и путь к букве диска.

Печенье масло
источник