Một ổ đĩa mạng được ánh xạ có thể được kết nối lại từ dòng lệnh?


32

Trên cơ sở hàng ngày, tôi thấy mình trong dấu nhắc lệnh của Windows cần truy cập vào ổ đĩa mạng được ánh xạ nhưng bị ngắt kết nối. Tôi vẫn chưa tìm thấy một lệnh sẽ kết nối lại ổ đĩa này mà không hủy ánh xạ và ánh xạ lại (điều này dẫn đến một trò chơi đoán mật khẩu, vì tôi không sở hữu các máy tính này). Tôi cũng muốn có thể viết kịch bản này để mỗi đêm ổ đĩa được kết nối lại nếu nó bị ngắt kết nối bằng cách nào đó.

Giải pháp nhanh nhất tôi hiện có là:

  1. Nhập " start." để mở explorer,
  2. Alt- Dđể tập trung thanh địa chỉ,
  3. gõ ký tự ổ đĩa tôi muốn và nhấn enter, và đợi nó hiển thị nội dung ổ đĩa,
  4. cuối cùng, đóng explorer và quay lại dấu nhắc lệnh.

Tôi biết đó là một bất tiện nhỏ, nhưng tôi thường làm điều này thông qua kết nối VNC hoặc PCAnywhere chậm, nơi làm bất cứ điều gì thông qua GUI là khủng khiếp, vì vậy tôi chỉ tự hỏi liệu có giải pháp nào tốt hơn không.


1
Điều gì xảy ra khi bạn `dir h: \`?
wfaulk

3
Thay vì gõ "bắt đầu. <Enter>" bạn chỉ có thể thực hiện win-E và lưu 5 tổ hợp phím ;-)
fretje

1
Tôi đã "giải quyết" nó bằng cách chỉ sử dụng đường dẫn \ server \ share thay vì ổ đĩa được ánh xạ. Bạn chỉ có thể sao chép các tập tin nếu bạn cần. (Đó là vấn đề của tôi)
Peterdk

Câu trả lời:


12

Có thể thử pushd \\server\share?


2
Tôi không chắc đây là thứ tôi cần. Pushd trông giống như nó tạo ra các ký tự ổ đĩa tạm thời; Tôi đã có một ký tự ổ đĩa được ánh xạ, nhưng chia sẻ bị ngắt kết nối (nó có dấu X màu đỏ trong trình thám hiểm và được gắn nhãn "Ổ đĩa mạng bị ngắt kết nối"). Có lẽ tôi đã nhầm.
Stephen Jennings

Vâng, tôi đã nghĩ rằng việc truy cập nó theo cách đó có thể chọc vào ổ đĩa để kết nối lại. Bạn có thể sử dụng popdđể loại bỏ ký tự ổ đĩa.
wfaulk

Tôi sẽ thử nó lần tới khi tôi gặp điều này. Tôi nghi ngờ nó sẽ thất bại khi nói thiết bị đang được sử dụng hoặc kết nối sai ký tự ổ đĩa với chia sẻ.
Stephen Jennings

2
Tôi đã thử điều này và nó thực sự đã làm việc. Lần đầu tiên tôi chạy Pushd để chia sẻ sau đó bật lên để hủy sơ đồ ký tự ổ đĩa thêm và tôi thấy ổ đĩa được ánh xạ mà tôi muốn được kết nối lại. Đây chắc chắn là một upvote và nếu tôi không nhận được câu trả lời ngắn hơn trong một vài ngày thì điều này sẽ được chấp nhận.
Stephen Jennings

1
Tôi chưa có khả năng hạ cấp, nhưng câu trả lời này không làm được gì cho tôi. Xem một số bài viết dưới đây để xem cái nào đã làm. Tôi cũng để lại một bình luận ở đó.
prl77

8

Tôi phải khởi động Windows 7 trước khi có thể chạy chương trình VPN kết nối tôi với các ổ đĩa mạng của công ty. Do đó, các ổ đĩa mạng của tôi không tự động kết nối lại, chỉ mở chúng trong Windows Explorer kết nối lại chúng.

Tôi đã tạo một tệp bó nhỏ để khởi động VPN, kết nối lại các ổ đĩa mạng và khởi động một số ứng dụng tôi luôn sử dụng.

Trong tập tin Batch của tôi, tôi có những điều sau đây:

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

Các Taskkill /fi "windowtitle eq"lệnh là trường hợp nhạy cảm!


Cảm ơn người đàn ông, đây là câu trả lời duy nhất trên toàn bộ chủ đề này đã giúp tôi. Tất nhiên tôi đã nâng cấp nó, nhưng tôi chưa có khả năng downvote cho những bài đăng trên bạn.
prl77

Btw, tôi không thấy "taskkill" có phân biệt chữ hoa chữ thường, ít nhất là không có trên Win 7 x64 với các bản vá mới nhất.
prl77

Lưu ý: Nếu các tham số tác vụ ở trên không phù hợp với bạn, hãy thử sử dụng TASKLIST / FI "IMAGENAME eq explorer.exe" / V để xem tiêu đề cửa sổ chính xác là gì. Chuỗi bộ lọc của tôi cho TASKKILL cuối cùng đã trở thành "windowtitle eq c $ *"
Luke

Thx Luke cho ý kiến ​​của bạn. Nó thực sự giúp ích cho tôi
Pawel

7

tạo một tệp bó (refreshletters.cmd) với các lệnh này trong đó

( những thứ này sẽ chỉ hoạt động trong một tệp bó )

Đã thử nghiệm trên Win7 và XP để làm mới các chữ cái trình điều khiển 'Ngắt kết nối' và 'Không khả dụng' trong cửa sổ bảng điều khiển (dòng lệnh).

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

Vì chúng tôi không biết trình độ chuyên môn của OP, nên có thể mở rộng câu trả lời của bạn.
Tog

net usehoạt động với tôi cho các ổ đĩa được ánh xạ không khả dụng trong Win7. ty
Mat M

1
Tôi chưa có khả năng hạ cấp, nhưng câu trả lời này không làm được gì cho tôi. Xem bài viết dưới đây của Claus Melander đã làm. Tôi cũng để lại một bình luận ở đó.
prl77

1
Nó hoạt động (được thử nghiệm với win7 x64), nhưng nó phụ thuộc vào đầu ra phụ thuộc ngôn ngữ net use, vì nó quét Unavailable. Nhưng đối với một win7 Đức bạn nhận được Nicht verfgb, bạn cần phải sửa đổi các giải pháp cho ngôn ngữ của bạn
Jeb

Điều này làm việc cho tôi, ngoại trừ một chia sẻ có một khoảng trống trong đường dẫn mạng ... Dù sao, tôi cuối cùng cũng đã thực hiện một số dòng "sử dụng mạng X: \ share \ path" được mã hóa cứng trong một tệp bó và tôi sẽ cập nhật nếu tôi thay đổi ánh xạ ổ đĩa. Đây là giải pháp tốt nhất cho tôi vì tôi thực sự không muốn mở cửa sổ Explorer để kết nối lại ổ đĩa ...
Aaron

6

Đây có lẽ là một câu hỏi ngu ngốc, nhưng giả sử ổ đĩa "bị ngắt kết nối" của bạn là H:, bạn đã thử thay đổi trực tiếp sang ổ đĩa chưa?

Nó hoạt động với tôi theo 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
Dấu nhắc lệnh không cho phép bạn chuyển sang ổ đĩa mạng hiện đang bị ngắt kết nối. Ít nhất là không phải trên hàng trăm máy tính tôi đang sử dụng trên (WinNT, Win2k, WinXP, WinXP nhúng).
Stephen Jennings

1
Kỳ dị. Tôi thề nó làm việc cho tôi.
wfaulk

nó làm việc cho tôi là tốt!
Snark

Tôi thừa nhận tôi đã thấy công việc này đôi khi, nhưng hầu hết thời gian nó không. Tôi không biết điều gì quyết định cách này hay cách khác, có thể là có hay không có thông tin xác thực đã lưu.
Stephen Jennings

1
Ồ, tôi cá là vậy. Tôi đang tự động xác thực bằng thông tin xác thực tên miền của mình.
wfaulk

4

Tôi biết bạn đã nói "sử dụng mạng" không hiệu quả với bạn - nhưng đây là những gì bạn có thể thử.

Chạy một tệp bó với tùy chọn sử dụng ròng / XÓA để xóa các kết nối hiện có / liên tục Và sau đó bạn có thể sử dụng mạng với tùy chọn / SAVECRED để sử dụng lại thông tin đăng nhập được sử dụng trong lần đăng nhập thành công cuối cùng. Tôi không chắc chắn nếu điều này sẽ giải quyết vấn đề của bạn nhưng nó đáng để xem xét.


Đây không phải là những gì tôi cần, nhưng đây chắc chắn là một điều hữu ích để biết. Điều này giải quyết một vấn đề khác mà tôi đã có.
Stephen Jennings

2

Tôi có cùng một vấn đề với nhiều kết nối và nó không liên tục. Khi tôi khởi động lại máy tính, đôi khi kết nối là "tốt" và đôi khi không. Tôi không gặp vấn đề về mật khẩu vì tôi thuộc mạng LAN của công ty, nhưng tôi vẫn gặp phải vấn đề khác.

Tôi đã tạo một tệp bó có tên ex.bat và lưu trữ nó (cùng với nhiều thứ khác) trong thư mục \ produc mà tôi đặt trong đường dẫn của mình. Tôi có thể gõ "ex h:" và nó sẽ chạy Windows Explorer và đặt nó trực tiếp vào ổ h :. Đây là tập tin bó:

start explorer /e,/select,%1

Điều này hoạt động, với rất ít tổ hợp phím. Hoặc nếu lúc đầu nó không hoạt động, hãy nhấn phím Enter để mở thư mục h: root và hiển thị nội dung. Hoặc, nhập "ex h: \ sub" trong đó thư mục con "phụ" tồn tại.

Vấn đề này dường như đã trở nên tồi tệ hơn rất nhiều gần đây, có lẽ là do một trong các bản vá bảo mật của Windows XP.

Một thứ khác để thử là ở phía máy chủ. Trên các máy chủ Windows, sửa đổi khóa Registry được cho là để giữ cho máy chủ không ngắt kết nối các kết nối của nó khi hết thời gian. Tôi làm điều này trên khá nhiều máy chủ của chúng tôi. Các tập tin là:

Windows Registry Editor Version 5.00

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

Từ một quy trình được chạy như một người dùng khác, start explorersẽ chỉ hoạt động nếu cả hai người dùng có cài đặt "Chạy các cửa sổ thư mục trong một quy trình riêng biệt".
ivan_pozdeev

1

Tôi gặp vấn đề tương tự và phát hiện ra rằng tôi có thể buộc kết nối lại với một "dir x:" đơn giản từ dòng lệnh (trong đó X: là ổ đĩa được ánh xạ nhưng bị ngắt kết nối.) Đây là từ hệ thống Server 2003 để ánh xạ ổ đĩa trên XP và Win7 máy tính.

Tôi đã tạo một tệp bó, Wake_network_drive.bat, với hai dòng sau:

    dir x:
    dir z:

và thiết lập một tác vụ theo lịch trình để chạy nó hàng đêm trước khi chương trình sao lưu bị lỗi vì các ổ đĩa thỉnh thoảng hiển thị là bị ngắt kết nối.


Những công việc này. Ngay cả khi dirlệnh gây ra lỗi cho bạn, nó vẫn có xu hướng đánh thức ổ đĩa mạng bị ngắt kết nối. Đây là câu trả lời tốt nhất của tất cả chúng.
Elliot Cameron

0

Chỉ loại:

NET USE H: \\server\share

(trong đó H: là ký tự ổ đĩa của bạn)

Nhập 'NET /? SỬ DỤNG 'để xem tất cả các tùy chọn lệnh này cung cấp cho bạn.


Điều này không hoạt động. Ký tự ổ đĩa đã được ánh xạ, nó chỉ bị ngắt kết nối (thông thường máy tính khác đã được khởi động lại). Khi bạn chạy nó, nó sẽ phàn nàn rằng thiết bị đã được sử dụng.
Stephen Jennings

Có, tôi đã thử nghiệm điều này ngay bây giờ và nhận được "Tên thiết bị cục bộ đã được sử dụng."
Stephen Jennings

1
Nó hoạt động với tôi ... nhưng tôi đang dùng Windows 7 và thực sự ổ đĩa tự kết nối lại ... Hãy thử NET USE H: đơn giản (không có đường dẫn), điều đó sẽ mang lại kết nối. Tôi quên nó đã từng như thế nào trong XP.
Zoran

0

Nếu bạn không phản đối việc giữ các mật khẩu này ở dạng văn bản đơn giản trong một đợt, bạn có thể tạo kịch bản xóa và ánh xạ lại bao gồm thông tin đăng nhập.

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

Tôi biết nó không đáp ứng yêu cầu của bạn về việc không xóa chia sẻ, nhưng nó giải quyết được gốc rễ của vấn đề phải nhớ mật khẩu.


Là một IT pro, tôi đang phản đối, cho cả bản thân mình và cho người dùng của tôi.
ivan_pozdeev

0

Tóm tắt TL; DR: sử dụng net useif exist

Tôi gặp phải một vấn đề liên quan trong khi tạo ra một kịch bản sao lưu hàng đêm. Nó phải kiểm tra xem máy tính đã được bật chưa (sử dụng ping), gửi gói ma thuật để bật nếu cần (sử dụng MC-WOL ), đợi Windows khởi động, sau đó thiết lập kết nối với chia sẻ SMB và chờ đợi hiện tại.

Mặc dù các câu trả lời khác ở đây rất hay, tôi không muốn các ký tự ổ đĩa được ánh xạ xuất hiện hoặc không kết nối bất cứ thứ gì mà người dùng có thể làm việc cùng, cũng như không có cửa sổ Explorer nhấp nháy xung quanh. tức là mục tiêu không làm người dùng mất tập trung .

Đây là một đoạn mã có thể hữu ích cho bạn:

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

Nếu bạn thích, bạn có thể thay thế địa chỉ IP ở trên bằng tên máy chủ (ví dụ server1).

net uselà cần thiết trong trường hợp không có kết nối hiện có. Tôi đã gặp một số trường hợp ở góc mà chỉ một mình nó dường như không đủ để "đánh thức" phần chia sẻ (ví dụ nếu có một kết nối trước đó tồn tại ở trạng thái ngắt kết nối). Tôi tìm thấy if existschỉ có tác dụng tương tự như các lựa chọn thay thế đề cập trong câu trả lời khác (như pushd, dir, Explorer, vv), nhưng nó dường như là một cách tiếp cận trọng lượng nhẹ hơn.


0

Câu trả lời từ StanZ đã làm việc cho tôi, nhưng tôi phải có thể lập trình xác định bất kỳ ổ đĩa được ánh xạ nào mà không có trạng thái OK, vì người dùng trong miền của chúng tôi có các ánh xạ ổ đĩa khác nhau. Tôi đã mã hóa ở đây để chạy như một phiên bản độc lập, thực thi net usetrước và sau mã thực tế, để bạn có thể xem kết quả, nhưng bạn chỉ cần sao chép một FORcâu lệnh (ba dòng) vào mã của mình để có kết quả mong muốn.

@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

Có thể một câu hỏi cũ nhưng vẫn có liên quan trong năm 2017 và Windows 10 vì các chia sẻ mạng thường không được kết nối lại hoặc được đính kèm một cách chính xác bởi các cửa sổ vì những lý do khác nhau. Dựa trên vấn đề này và sự vắng mặt của một giải pháp hoạt động đầy đủ và có thể thực hiện được, tôi đã tạo một dự án Github có chứa Tác vụ lập lịch và VBS để giải quyết vấn đề bằng cách cố gắng kết nối lại các ổ đĩa sau khi tiếp tục hoặc đăng nhập nếu không được kết nối hoặc trực tuyến.

Kịch bản có thể cấu hình đầy đủ và có thể được thiết lập tùy theo nhu cầu của người dùng thực tế.

Đường dẫn đến dự án Github

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.