Чи можна повторно підключити відображений на карті мережевий диск із командного рядка?


32

Щодня я опиняюсь у командному рядку Windows, потребуючи доступу до мережевого диска, який відображений, але відключений. Мені ще потрібно знайти команду, яка з’єднає цей диск без розпакування та перестановки (що призводить до гри вгадування пароля, оскільки я не володію цими комп'ютерами). Я також хотів би мати можливість цього сценарію, щоб щовечора накопичувач знову підключався, якщо він якось відключався.

Найшвидше рішення, яке я маю на даний момент, це:

  1. Наберіть " start.", щоб відкрити провідник,
  2. Alt- Dфокусувати адресний рядок,
  3. введіть потрібну літеру диска та натисніть клавішу Enter, і дочекайтеся, коли він відобразить вміст диска,
  4. потім нарешті закрийте Explorer і поверніться до командного рядка.

Я знаю, що це незначна незручність, але я часто роблю це через повільний VNC або PCAnywhere з'єднання, де робити що-небудь через GUI - це жахливо, тому мені просто цікаво, чи є краще рішення.


1
Що відбувається, коли ви `dir h: \`?
wfaulk

3
Замість введення "start. <enter>" ви можете просто зробити win-E і зберегти 5 натискань клавіш ;-)
fretje

1
Я "вирішив" це, просто використовуючи \\ сервер \ спільний шлях замість відображеного на диску диска. Ви можете просто скопіювати файли, якщо вам потрібно. (Це була моя проблема)
Peterdk

Відповіді:


12

Може, спробувати pushd \\server\share?


2
Я не впевнений, що це те, що мені потрібно. Pushd виглядає так, що створює тимчасові літери диска; У мене вже відображено букву накопичувача, але частка відключена (вона має червоний X у провіднику і позначена "Відключений мережевий диск"). Можливо, я помиляюся.
Стівен Дженнінгс

Так, я думав, що доступ до нього таким чином може підштовхнути привід до відновлення. Ви можете popdвидалити літеру диска.
wfaulk

Я спробую це наступного разу, коли зіткнуся з цим. Я підозрюю, що або не вдасться сказати, що пристрій використовується, або підключить неправильну літеру диска до спільної мережі.
Стівен Дженнінгс

2
Я спробував це, і це насправді спрацювало. Я спершу пробіг pushd до папки, а потім popd, щоб зняти карту додаткової літери накопичувача, і я знайшов, що карта, яку я хотів, була знову підключена Це, безумовно, підсумок, і якщо я не отримаю коротшої відповіді через пару днів, це буде прийнято.
Стівен Дженнінгс

1
У мене ще немає можливості знизити, але ця відповідь нічого не зробила для мене. Перегляньте кілька публікацій нижче, щоб побачити, що зробили. Я також залишив там коментар.
prl77

8

Мені потрібно запустити Windows 7, перш ніж запустити програму VPN, яка підключає мене до мережевих накопичувачів компанії. Тому мої мережеві накопичувачі не підключаються автоматично, лише відкриваючи їх у Windows Explorer, їх знову підключає.

Я створив невеликий пакетний файл, щоб запустити VPN, знову підключити мережеві диски та запустити деякі програми, які я завжди використовую.

У своєму пакетному файлі я маю наступне:

REM Connect VPN here...

REM Opens an Explorer window looking at T: forcing a reconnect
Start /min explorer t:\

timeout 3 /nobreak

REM Kill all Explorer windows beginning with "T_drive" in the title
Taskkill /fi "windowtitle eq T_drive*"

REM Finish starting up here...

exit

Taskkill /fi "windowtitle eq"Команда чутлива до регістру!


Спасибі людина, це була єдина відповідь на всю цю нитку, яка мені допомогла. Звичайно, я підтримав це, але я ще не маю спроможності знижувати цю посаду над вами.
prl77

До речі, я не знаходжу "taskkill", що має чутливість до регістру, принаймні не на Win 7 x64 з останніми виправленнями.
prl77

Примітка. Якщо наведені вище параметри завдання завдання не працюють для вас, спробуйте скористатися TASKLIST / FI "IMAGENAME eq explor.exe" / V, щоб побачити, що таке правильна назва вікна. Мій рядок фільтра для TASKKILL закінчився "windowtitle eq c $ *"
Лука

Thx Лука для вашого коментаря. Мені це справді допомогло
Pawel

7

створити пакетний файл (refreshletters.cmd) з цими командами в ньому

( вони працюватимуть лише у пакетному файлі )

Тестовано на Win7 та XP для оновлення букв драйвера "Відключено" та "Недоступно" у вікні консолі (командний рядок).

@echo off
net use |FIND ":" > %temp%\used.txt
FOR /F " tokens=1,2,3 delims= " %%i in (%temp%\used.txt) do (

  if %%i EQU Unavailable  (
    net use %%j %%k
    echo Activated %%j
   ) ELSE (
     if %%i EQU Disconnected (
       pushd .
       cd /d %%j
       dir . %>nul
       if NOT exist %%j\. (
          net use %%j /del /y
          net use %%j %%k
          echo Remapped %%j
          ) else (
             echo Fixed-up %%j
            )
       popd
       ) ELSE (
          echo Checked %%j
          )
     )
 )

Зважаючи на те, що ми не знаємо рівня знань ОП, можливо, буде корисною детальнішою інформацією.
Тог

net useпрацює для мене недоступні відображені накопичувачі в Win7. ty
Мат М

1
У мене ще немає можливості знизити, але ця відповідь нічого не зробила для мене. Дивіться пост нижче Клаус Меландер, який це зробив. Я також залишив там коментар.
prl77

1
Це працює (тестується на win7 x64), але це залежить від вибору мови net use, на який він сканує Unavailable. Але для німецької win7, яку ви отримаєте Nicht verfgb, вам потрібно змінити рішення на своїй мові
jeb

Це працювало для мене, за винятком однієї спільної ділянки, яка мала простір в мережевому шляху ... У будь-якому випадку, я просто закінчив робити кілька жорстко закодованих рядків "net use X: \\ share \ path" у пакетному файлі, і я буде постійно його оновлювати, якщо я коли-небудь зміню відображення накопичувача. Це найкраще рішення для мене, тому що я дійсно не хочу відкривати вікно Провідника, щоб накопичити привід для відновлення зв'язку ...
Аарон

6

Це, мабуть, дурне запитання, але якщо припустити, що ваш "відключений" привід - це Н :, ви спробували просто перейти безпосередньо на диск?

Він працює для мене під XPSP3:

C:\>net use
New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
Disconnected H:        \\xxxxxx\wfaulk           Microsoft Windows Network
OK                     \\xxxxxxx\business        Microsoft Windows Network
The command completed successfully.


C:\>h:

H:\>net use
New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
OK           H:        \\xxxxxx\wfaulk           Microsoft Windows Network
OK                     \\xxxxxxx\business        Microsoft Windows Network
The command completed successfully.

2
Командний рядок не дозволяє вам перейти на мережевий диск, який наразі відключений. Принаймні, не на сотнях комп’ютерів, якими я цим користуюся (WinNT, Win2k, WinXP, WinXP Embedded).
Стівен Дженнінгс

1
Дивно. Клянусь, це працює на мене.
wfaulk

це працює і для мене!
Снарк

Зізнаюся, я часто бачив цю роботу, але більшість випадків це не так. Я не знаю, що визначає той чи інший спосіб, можливо, є чи немає збережених облікових даних.
Стівен Дженнінгс

1
О, я думаю, що це все. Я автоматично підтверджую автентифікацію за допомогою облікових даних домену.
wfaulk

4

Я знаю, ви сказали, що "чисте використання" не спрацювало для вас - але ось що ви можете спробувати.

Запустіть пакетний файл з опцією net use / DELETE для видалення існуючих / стійких з'єднань. Потім ви можете використати чисте використання за допомогою параметра / SAVECRED для повторного використання passowd облікових даних, що використовуються в останньому успішному вході. Я не впевнений, чи це вирішить вашу проблему, але варто звернути увагу.


Це не зовсім те, що мені потрібно, але це, безумовно, корисна річ, яку потрібно знати. Це вирішує ще одну проблему, яку я мав.
Стівен Дженнінгс

2

У мене однакова проблема з декількома з'єднаннями, і це переривчасте. Коли я перезавантажую комп'ютер, іноді з'єднання є «хорошим», а іноді - ні. У мене немає проблеми з паролем, оскільки я перебуваю в локальній мережі компанії, але все ж у мене є інший аспект проблеми.

Я створив пакетний файл, який називається ex.bat, і зберігав його (разом з багатьма іншими речами) у каталозі \ util, який я помістив на своєму шляху. Я можу набрати "ex h:", і він запустить Провідник Windows і встановить його для прямого переходу до диска h:. Ось пакетний файл:

start explorer /e,/select,%1

Це працює, із значно меншою кількістю натискань клавіш. Або якщо спочатку це не працює, натисніть клавішу Enter, щоб відкрити папку h: root і відобразити вміст. Або введіть "ex h: \ sub" там, де існує підпапка "sub".

Ця проблема, здається, останнім часом значно погіршилася, можливо, через один із патчів безпеки Windows XP.

Ще одна річ, яку слід спробувати, - це на стороні сервера. На серверах Windows зміна ключа реєстру повинна запобігти відключенню з'єднань під час очікування. Я роблю це майже на всіх наших серверах. Файл:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"autodisconnect"=dword:ffffffff

З процесу, запущеного як інший користувач, start explorerбуде працювати лише в тому випадку, якщо для обох користувачів встановлено параметр "Запустити вікна папок в окремий процес".
ivan_pozdeev

1

У мене виникла подібна проблема, і я виявив, що можу примусити повторне з'єднання за допомогою простого "dir x:" з командного рядка (де X: був відображений, але відключений диск.) Це було із системи Server 2003, щоб зіставити диски на XP та Win7 комп’ютери.

Я створив пакетний файл, wake_network_drives.bat, за допомогою цих двох рядків:

    dir x:
    dir z:

і встановив планове завдання запустити його щоночі перед програмою резервного копіювання, яка вийшла з ладу, оскільки диски час від часу показувались як відключені.


Це працює. Навіть якщо dirкоманда дає вам помилку, вона, як правило, будить відключений мережевий диск. Це найкраща відповідь на всіх.
Елліот Камерон

0

Просто введіть:

NET USE H: \\server\share

(де H: звичайно, ваша літера диска)

Введіть 'NET /? ВИКОРИСТИТИ ', щоб побачити всі параметри, які дає вам ця команда.


Це не працює. Лист накопичувача вже нанесений на карту, він просто відключений (зазвичай інший комп'ютер був перезавантажений). Коли ви запускаєте це, він скаржиться, що пристрій вже використовується.
Стівен Дженнінгс

Так, я перевірив це лише зараз і отримав "Ім'я локального пристрою вже використовується".
Стівен Дженнінгс

1
Це працює для мене ... але я перебуваю на Windows 7, і фактично диск знову підключається сам ... Спробуйте NET USE H: простий (без шляху), який повинен повернути з'єднання. Я забуваю, як це було в XP.
Зоран

0

Якщо ви не проти збереження цих паролів у простому тексті у пакетній партії, ви можете скопіювати видалення та перезапис, включаючи облікові дані.

net use H: /delete
net use H: \\server\share /user:domain\user password /persistent:yes

Я знаю, що це не відповідає вашій вимозі не видаляти папку, але це вирішує корінь проблеми з необхідністю запам’ятовування паролів.


Як ІТ - профі, я маю проти, і для мене і для моїх користувачів.
ivan_pozdeev

0

Підсумок TL; DR: використання net useтаif exist

Я зіткнувся з пов’язаною проблемою під час створення сценарію нічного резервного копіювання. Потрібно було перевірити, чи ввімкнено комп'ютер (за допомогою ping), надіслати чарівний пакет, щоб увімкнути його за потреби (за допомогою MC-WOL ), дочекатися завантаження Windows, а потім встановити підключення до акції SMB та дочекатися його бути присутнім.

Хоча інші відповіді тут чудові, я не хотів, щоб відображені букви накопичувачів, що з'являються / вибудовуються, або відключати все, що може працювати з користувачем, а також не прошивати вікна Провідника. тобто метою було нульове відволікання користувачів .

Ось шматок коду, який може бути вам корисним:

set TARGET_IP=192.168.1.3
set TARGET_PATH=\\%TARGET_IP%\d$\backups
set ATTEMPTS=0

:LOOP

REM Give up eventually
if %ATTEMPTS% GEQ 200 goto NOJOY

REM Wait for IP connectivity to host, and/or burn up a couple seconds before retry
ping -n 1 -w 2000 %TARGET_IP% | find "TTL" > nul
if errorlevel 1 set /a ATTEMPTS+=1 & goto LOOP

REM See if we're already connected, and try to give it a kick
if exist %TARGET_PATH% goto CONNECTED

REM Try to reconnect
net use %TARGET_PATH% > nul
if errorlevel 1 set /a ATTEMPTS+=1 & goto LOOP

:CONNECTED
echo Connected
exit /b

:NOJOY
echo Couldn't connect

Якщо вам зручніше, ви можете замінити IP-адресу вище на ім'я хоста (наприклад server1).

net useпотрібен у випадку, якщо немає наявного з'єднання. Я зіткнувся з деякими кутовими випадками, коли одна тільки здавалася недостатньою, щоб "розбудити" частку (наприклад, якщо був попередній зв'язок, що існував у відключеному стані). Я виявив , що if existsдиректива має такий же ефект , як альтернативи , згадані в інших відповідях (як pushd, dir, Explorerі т.д.), але це здавалося світліше ваги підхід.


0

Відповідь StanZ працювала на мене, але мені довелося програматично визначати будь-які відображені диски без статусу ОК, оскільки користувачі нашого домену отримують різні відображення дисків. Я зашифрований тут, щоб працювати як окрема версія, яка виконується net useдо і після власне коду, щоб ви могли бачити результати, але вам потрібно лише скопіювати одне FORтвердження (три рядки) у свій код, щоб отримати бажані результати.

@ECHO OFF
::  
:: revision of answer from StanZ on superuser.com at the following url  
:: https://superuser.com/questions/52595/can-a-mapped-network-drive-be-reconnected-from-the-command-line/367910#367910  
:: https://superuser.com/a/367910  
:: which resulted in my  
::  
:: DriveStatusOK.bat  
:: iCharlieC  
::  
SETLOCAL ENABLEEXTENSIONS  
::  
:: you need only copy the one FOR statement (three lines)  
::   to use in your own code  
::   to force status of mapped network drives to OK  
::  
:: "tokens=1-2 delims=: " is used in the for statement  
:: to output only the drive letter from the output of...  
:: net use  
:: is piped to the first findstr which outputs only lines with drive letters  
::   then piped to another findstr to eliminate drives with a status of OK  
::   then piped to another findstr to get lines that start with a status  
::     -in other words, those lines that the first character is a letter-  
::     -this due to the fact that in our domain we have a drive  
::      that is mapped to a letter, but never has a status.  
::      I do not know the reason for this,  
::      but adding that last findstr prevents me from getting an error  
::      from trying to execute a dir on a non-existant drive letter.-  
::   then dir is executed on each drive letter (after appending ":\" to the letter)  
::      and the output redirected to NUL  
::  
:: run net use before as a visual here  
net use  
::  
FOR /F "tokens=1-2 delims=: " %%i in (  
    'net use ^| findstr ":" ^| findstr /i /v "^OK" ^| findstr /i "^[A-Z]"'  
    ) do dir "%%j:" > NUL  
::  
:: run net use after "waking" drive(s)  
net use  
::  
ENDLOCAL  

0

Можливо, старе питання, але все-таки актуальне в 2017 році та Windows 10, оскільки мережеві спільні часто з різних причин часто не підключаються або приєднуються приховано. Виходячи з цієї проблеми та відсутності реального практичного та повного робочого рішення, я створив проект Github, який містить завдання планувальника та VBS, який вирішує проблему, просто намагаючись знову підключити диски після відновлення або входу, якщо вони не підключені чи в Інтернеті.

Сценарій повністю настроюється і може бути налаштований залежно від потреб фактичного користувача.

Шлях до проекту Github

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