Eşlenen bir ağ sürücüsü komut satırından tekrar bağlanabilir mi?


32

Günlük olarak kendimi Windows komut isteminde eşlenmiş ancak bağlantısı kesilmiş bir ağ sürücüsüne erişmeye ihtiyaç duyuyorum. Henüz bu sürücüyü, eşlemesini açmadan ve yeniden eşlemeden yeniden bağlayacak bir komut bulamadım (bu, bilgisayarlara sahip olmadığım için bir parola tahmin etme oyununa yol açar). Bunu da yazabilmeyi isterim, böylece her gece bir şekilde bağlantısı kesilirse sürücüye yeniden bağlanır.

Şu anda sahip olduğum en hızlı çözüm:

  1. start.Explorer'ı açmak için " " yazın,
  2. Alt- Dadres çubuğunu odaklamak,
  3. İstediğim sürücü harfini yazıp enter tuşuna basın ve sürücü içeriğini göstermesini bekleyin,
  4. daha sonra nihayet explorer'ı kapatın ve komut istemine geri dönün.

Küçük bir rahatsızlık olduğunu biliyorum, ancak bunu genellikle GUI üzerinden bir şey yapmanın berbat olduğu yavaş bir VNC veya PCAnywhere bağlantısı aracılığıyla yapıyorum, bu yüzden daha iyi bir çözüm olup olmadığını merak ediyorum.


1
Dir h: \ `a ne olur?
wfaulk

3
"Start. <enter>" yazmanız yerine, sadece kazandığınız-E'yi yapabilir ve 5 tuşa basabilirsiniz ;-)
fretje

1
Eşlenen sürücü yerine sadece \\ sunucu \ paylaşım yolunu kullanarak onu çözdüm. Gerekirse sadece dosyaları kopyalayabilirsiniz. (Bu benim
sorunumdu

Yanıtlar:


12

Belki deneyebilirsin pushd \\server\share?


2
İhtiyacım olan şeyin bu olduğundan emin değilim. Pushd geçici sürücü harfleri yaratıyor gibi görünüyor; Haritalanmış bir sürücü mektubum var, ancak paylaşım bağlantısı kesildi (explorer'da kırmızı bir X işareti var ve "Bağlantısız Ağ Sürücüsü" olarak etiketlendi). Belki yanılıyorum.
Stephen Jennings

Evet, bu şekilde erişmenin sürücüyü yeniden bağlanmaya zorlayabileceğini düşünüyordum. popdSürücü harfini kaldırmak için kullanabilirsiniz .
wfaulk

Bir dahaki sefere karşılaştığımda deneyeceğim. Aygıtın kullanımda olduğunu söyleme konusunda başarısız olacağını ya da yanlış sürücü harfini paylaşıma bağladığından şüpheleniyorum.
Stephen Jennings

2
Bunu denedim ve gerçekten işe yaradı. Önce paylaşıma bastırdım, sonra da fazladan sürücü harfini kaldırmak için fırlattım ve tekrar bağlanmasını istediğim haritalanmış sürücüyü buldum. Bu kesinlikle bir avantajdır ve birkaç gün içinde daha kısa bir cevap alamazsam bu kabul edilir.
Stephen Jennings

1
Henüz aşağı oy verme yeteneğim yok, ancak bu cevap benim için hiçbir şey yapmadı. Hangisinin yaptığını görmek için aşağıdaki birkaç gönderiye bakın. Ayrıca orada bir yorum bıraktım.
prl77

8

Beni şirket ağ sürücülerine bağlayan VPN programını çalıştırabilmem için Windows 7'yi başlatmam gerekiyor. Bu nedenle, ağ sürücülerim otomatik olarak yeniden bağlanmıyor, yalnızca Windows Gezgini'nde açmanız onları yeniden bağlıyor.

VPN'i başlatmak, ağ sürücülerini yeniden bağlamak ve her zaman kullandığım bazı uygulamaları başlatmak için küçük bir toplu iş dosyası hazırladım.

Batch dosyamda aşağıdakiler var:

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"Komut harfe duyarlıdır!


Sağol dostum, bu bana yardımcı olan bütün konudaki tek cevaptı. Tabii ki onu abartmıştım, ancak üstünüzdeki yayınlar için henüz oy kullanma yetkim yok.
prl77

BTW, en azından yamalar ile Win 7 x64'te büyük küçük harf duyarlılığı olan "taskkill" bulamıyorum.
prl77

Not: Yukarıdaki görev dizisi parametreleri sizin için işe yaramazsa, doğru pencere başlığının ne olduğunu görmek için TASKLIST / FI "IMAGENAME eq explorer.exe" / V kullanmayı deneyin. TASKKILL için filtre dizgim "windowtitle eq c $ *" olarak sona erdi
Luke

Thx Luke, yorumunuz için. Bu gerçekten bana yardımcı oldu
Pawel

7

içinde bu komutlarla bir toplu iş dosyası (refreshletters.cmd) oluşturun

( bunlar yalnızca bir toplu iş dosyasında çalışır )

Konsol penceresindeki 'Disconnected' ve 'Unavailable' sürücü harflerini yenilemek için Win7 ve XP'de test edilmiştir (komut satırı).

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

OP'nin uzmanlık seviyesini bilmediğimizden, cevabınızı genişletmek iyi bir fikir olabilir.
Tog

net useWin7'deki Kullanılamayan eşlenen sürücüler için benim için çalışıyor. ty
Mat M

1
Henüz aşağı oy verme yeteneğim yok, ancak bu cevap benim için hiçbir şey yapmadı. Aşağıdaki yazıyı görmek için Claus Melander'in yazısına bakınız. Ayrıca orada bir yorum bıraktım.
prl77

1
Çalışır (win7 x64 ile test edilmiştir), ancak net usetarama yaptığı dile bağlı çıktısına bağlıdır Unavailable. Ancak aldığınız bir Alman win7 için Nicht verfgb, çözümü dilinize göre değiştirmeniz gerekiyor
jeb

Bu, benim için işe yaradı, ağ yolunda boş yer olan bir paylaşım dışında ... Her neyse, bir toplu iş dosyasında kodlanmış bazı "net use X: \\ share \ path" satırları yapıyorum. Sürücü eşlemelerini değiştirirsem, güncel kalmaya devam eder. Bu benim için en iyi çözüm, çünkü sürücünün yeniden bağlanmasını sağlamak için bir Explorer penceresi açmak istemiyorum ...
Aaron

6

Bu muhtemelen aptalca bir soru, ancak "bağlantınız kesildi" sürücünüzü H olarak kabul edersek, doğrudan sürücüye geçmeyi denediniz mi?

XPSP3 altında benim için çalışıyor:

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
Komut istemi, şu anda bağlantısı kesilmiş bir ağ sürücüsüne geçmenize izin vermiyor. En azından bunu kullandığım yüzlerce bilgisayarda (WinNT, Win2k, WinXP, WinXP Gömülü).
Stephen Jennings,

1
Tuhaf. Yemin ederim benim için işe yarıyor.
wfaulk

benim için de işe yarıyor!
Snark

Bu işi ara sıra gördüğümü itiraf ediyorum, fakat çoğu zaman bunu yapmıyor. Bir yolu veya diğerini neyin belirlediğini bilmiyorum, muhtemelen kayıtlı kimlik bilgileri olup olmadığını.
Stephen Jennings

1
Oh, iddiaya girerim bu kadar. Etki alanı kimlik bilgilerimi kullanarak otomatik olarak kimlik doğrulaması yapıyorum.
wfaulk

4

"Net kullanımı" sizin için işe yaramadığını söylediğini biliyorum - ama işte deneyebileceğiniz şeyler.

Varolan / kalıcı bağlantıları kaldırmak için net use / DELETE seçeneğiyle bir toplu iş dosyası çalıştırın. Daha sonra, son başarılı oturum açma işleminde kullanılan geçiş kimlik bilgilerini yeniden kullanmak için / SAVECRED seçeneğiyle net kullanımını kullanabilirsiniz. Sorununun çözülüp çözülmeyeceğinden emin değilim ama araştırmaya değer.


İhtiyacım olan bu değil, ama bu kesinlikle bilmesi gereken yararlı bir şey. Bu yaşadığım başka bir sorunu çözdü.
Stephen Jennings

2

Aynı bağlantıyı birden fazla bağlantıyla da yaşıyorum ve bu zaman zaman sürüyor. Bilgisayarı yeniden başlattığımda, bazen bağlantı "iyi" ve bazen değil. Şirket LAN'ında olduğum için şifre sorunum yok ama yine de sorunun diğer yönü var.

Ex.bat adlı bir toplu iş dosyası yarattım ve (başka birçok şeyle birlikte) yoluma koyduğum bir \ util dizininde sakladım. "Ex h:" yazabilir ve Windows Gezgini'ni çalıştıracak ve doğrudan h: sürücüsüne gidecek şekilde ayarlayacaktır. Toplu iş dosyası:

start explorer /e,/select,%1

Bu, çok daha az tuş vuruşuyla çalışır. Veya ilk önce çalışmazsa, h: root klasörünü açmak ve içeriği görüntülemek için Enter tuşuna basın. Veya "sub" alt klasörünün bulunduğu "ex h: \ sub" yazın.

Bu sorun, belki de Windows XP güvenlik düzeltme eklerinden biri nedeniyle son zamanlarda çok daha kötüye gitti.

Denenecek başka bir şey sunucu tarafında. Windows sunucularında, bir Kayıt Defteri anahtarının değiştirilmesinin sunucunun bağlantılarını bir zaman aşımı ile bağlantısını kesmemesi gerekiyordu. Bunu hemen hemen tüm sunucularımızda yapıyorum. Dosya:

Windows Registry Editor Version 5.00

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

Başka bir kullanıcı olarak çalışan bir işlemden start exploreryalnızca her iki kullanıcı da "Klasör pencerelerini ayrı bir işlemde çalıştır" ayarına sahipse çalışır.
ivan_pozdeev

1

Benzer bir sorun yaşadım ve komut satırından basit bir "dir x:" ile yeniden bağlanmaya zorlayabileceğimi keşfettim (burada X: haritalandı ama bağlantısı kesildi.) Bu, bir Server 2003 sisteminden XP ve Win7'deki haritalanmış sürücülere yapıldı. bilgisayarlar.

Wake_network_drives.bat adlı bir toplu iş dosyasını bu iki satırla oluşturdum:

    dir x:
    dir z:

ve sürücüler zaman zaman bağlantısız olarak gösterildiğinden, başarısız olan yedekleme programından önceki gece çalışacak şekilde zamanlanmış bir görev belirleyin.


Bu çalışıyor. dirKomut size bir hata verse bile , bağlantısı kesilmiş ağ sürücüsünü uyandırma eğilimindedir. Bu hepsinin en iyi cevabı.
Elliot Cameron

0

Sadece yaz:

NET USE H: \\server\share

(H: elbette sürücü mektubunuzdur)

'NET /? Yazın KULLANIN 'Bu komutu size veren tüm seçenekleri görmek için.


Bu çalışmıyor. Sürücü harfi zaten haritalandı, bağlantısı kesildi (genellikle diğer bilgisayar yeniden başlatıldı). Bunu çalıştırdığınızda, cihazın zaten kullanımda olduğundan şikayetçi.
Stephen Jennings

Evet, bunu şimdi test ettim ve "Yerel cihaz adı zaten kullanımda" dedim.
Stephen Jennings

1
Bu benim için çalışıyor ... ama ben Windows 7'deyim ve aslında sürücü kendi kendine yeniden bağlanıyor ... NET USE H'yi deneyin: basit (yolu olmadan), bu bağlantıyı yeniden kurmalı. XP’de nasıl kullanıldığını unutuyorum.
Zoran

0

Bu şifreleri toplu halde düz metin olarak tutmamanıza karşıysanız, kimlik bilgilerini içeren bir silme ve kısa mesaj yazabilirsiniz.

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

Paylaşımı silmeme gerekliliğinizi karşılamadığını biliyorum, ancak parolaları hatırlamak zorunda kalmamanın sorununu giderir.


Bir BT uzmanı olarak hem kendim hem de kullanıcılarım için karşıyım .
ivan_pozdeev

0

TL; DR özeti: kullanın net useveif exist

Gecelik yedekleme betiği oluştururken ilgili bir sorunla karşılaştım. Bir bilgisayarın açık olup olmadığını (ping kullanarak) kontrol etmek, gerektiğinde açmak için sihirli bir paket göndermek ( MC-WOL kullanarak ), Windows'un önyüklemesini beklemek, daha sonra bir SMB paylaşımına bağlantı kurmak ve beklemek zorundaydı. mevcut olması.

Buradaki diğer cevaplar harika olsa da, eşleştirilen sürücü harflerinin varlığın içine girip çıkması veya kullanıcının çalışabileceği herhangi bir şeyin bağlantısını kesmesini ya da Explorer pencerelerinin etrafında yanıp sönmesini istemedim. yani, bir hedef sıfır kullanıcı dikkatini dağıtmaktı .

İşte size yardımcı olabilecek bir kod parçası:

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

İsterseniz, yukarıdaki IP adresini bir ana bilgisayar adıyla değiştirebilirsiniz (örn. server1).

net useMevcut bir bağlantı olmaması durumunda gereklidir. Hisseyi "uyandırmak" için tek başına yeterli görünmeyen bazı köşe davalarına rastladım (örneğin, bağlantısı kesilmiş bir durumda önceden bir bağlantı varsa). Bulduğum if existsdirektif diğer cevaplar (gibi belirtilen alternatif olarak benzer bir etkiye sahiptir pushd, dir, Explorer, vs), ancak daha hafif ağırlıklı bir yaklaşım gibi görünüyordu.


0

StanZ'in cevabı benim için işe yaradı, ancak etki alanımızdaki kullanıcılar farklı sürücü eşlemeleri elde ettiklerinden, herhangi bir eşlenmiş sürücüyü OK durumu olmadan programatik olarak belirleyebildim. Burada net use, gerçek koddan önce ve sonra çalışan ve sonuçları görebilmeniz için bağımsız bir sürüm olarak çalışacak şekilde kodladım , ancak FORistenen sonuçları elde etmek için yalnızca bir ifadeyi (üç satır) kodunuza kopyalamanız gerekir .

@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

Belki eski bir soru ama 2017 ve Windows 10'da hala geçerli çünkü ağ paylaşımları genellikle farklı nedenlerle pencerelerle yeniden bağlanmadı veya bağlanmadı. Bu soruna ve gerçek bir pazarlanabilir ve tam çalışan bir çözümün bulunmamasına dayanarak, bir Zamanlayıcı Görevi içeren bir Github projesi ve yalnızca bağlı olmadıklarında veya çevrimiçi olmadıklarında sürücüleri yeniden başlatmayı veya oturum açtıktan sonra yeniden bağlamayı deneyerek sorunu çözen bir VBS oluşturdum.

Betik yapılandırılabilir ve gerçek kullanıcının ihtiyaçlarına göre ayarlanabilir.

Github projesine giden yol

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.