Визначте відображений мережевий шлях із вікна cmd


26

У мене мережевий накопичувач - відображений на Z:\

Чи є проста команда, з якої можна знати повний мережевий шлях cmd?

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

net use це добре, але я хотів би отримати повний шлях до поточного робочого каталогу (для швидких копій).

Відповіді:


37

Тип

net use

Це покаже вам усі підключені до цього часу мережеві накопичувачі.

OK           Z:        \\127.0.0.1\c$            Microsoft Windows Network

Спасибі, чи знаєте ви спосіб отримати повний шлях поточного робочого каталогу?
Офіріс

1
Про що echo %cd%?
Ендоро

@Endoro, echo %cd%виводить поточний каталог ( Z:\ABC), а не\\netDrive\ABC
Ofiris

Я не думаю, що ви можете зробити простий командний рядок, щоб отримати його. Можливо, ви зможете написати сценарій пакетного / повноваження, щоб це зробити, але я не намагався його зробити. Перевірте відповідь від Ікара на: 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% зберігає поточний шлях і вам потрібна лише літера диска, тому ви шукаєте його лише за допомогою команди FIND у 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.


зразок інтригуючий, але розбитий. Наприклад, приклад (DO...)в пакетній партії відсутній SET ...і bOriginalPathніде не визначений.
matt wilkie

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 та ваш шлях на літері накопичувача.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.