Dapatkah drive jaringan yang dipetakan dihubungkan kembali dari baris perintah?

30

Setiap hari saya menemukan diri saya di command prompt Windows perlu mengakses drive jaringan yang dipetakan tetapi terputus. Saya belum menemukan perintah yang akan menyambungkan kembali drive ini tanpa membuka dan memetakan ulang (yang mengarah ke permainan menebak kata sandi, karena saya tidak memiliki komputer ini). Saya juga ingin skrip ini sehingga setiap malam drive terhubung kembali jika entah bagaimana telah terputus.

Solusi tercepat yang saya miliki saat ini adalah:

  1. Ketik " start. "untuk membuka explorer,
  2. Alt - D untuk memfokuskan bilah alamat,
  3. ketik huruf drive yang saya inginkan dan tekan enter, dan tunggu untuk menampilkan konten drive
  4. lalu akhirnya, tutup explorer dan kembali ke command prompt.

Saya tahu ini sedikit ketidaknyamanan, tapi saya sering melakukan ini melalui koneksi VNC atau PCAnywhere yang lambat di mana melakukan sesuatu melalui GUI sangat buruk, jadi saya hanya ingin tahu apakah ada solusi yang lebih baik.

Stephen Jennings
sumber
1
Apa yang terjadi ketika Anda `mati h: \`?
wfaulk
3
Sebagai gantinya mengetik "mulai. & Lt; masukkan & gt;" Anda bisa melakukan win-E dan menyimpan 5 penekanan tombol ;-)
fretje
1
Saya "memecahkan" itu dengan hanya menggunakan jalur \\ server \ share daripada drive yang dipetakan. Anda bisa menyalin file jika perlu. (Itu masalah saya)
Peterdk

Jawaban:

12

Mungkin mencoba pushd \\server\share?

wfaulk
sumber
2
Saya tidak yakin ini yang saya butuhkan. Pushd sepertinya membuat huruf drive sementara; Saya sudah memiliki huruf drive yang dipetakan, tetapi bagian itu terputus (memiliki X merah di explorer dan diberi label "Drive Jaringan Terputus"). Mungkin saya salah.
Stephen Jennings
Ya, saya berpikir bahwa mengaksesnya dengan cara itu mungkin menyodok drive untuk terhubung kembali. Kamu bisa memakai popd untuk menghapus huruf drive.
wfaulk
Saya akan mencobanya lain kali saya temui ini. Saya menduga itu akan gagal mengatakan perangkat sedang digunakan, atau menghubungkan huruf drive yang salah ke share.
Stephen Jennings
2
Saya mencoba ini dan ternyata berhasil. Saya pertama kali menjalankan pushd ke bagikan lalu popd untuk menghapus peta huruf drive tambahan, dan saya menemukan drive yang dipetakan yang saya inginkan terhubung lagi. Ini jelas merupakan suatu upvote, dan jika saya tidak mendapatkan jawaban yang lebih pendek dalam beberapa hari ini akan diterima.
Stephen Jennings
Saya belum memiliki kemampuan downvoting, tetapi jawaban ini tidak membantu saya. Lihat beberapa posting di bawah untuk melihat yang melakukannya. Saya juga meninggalkan komentar di sana.
prl77
7

Saya harus memulai Windows 7 sebelum saya dapat menjalankan program VPN yang menghubungkan saya ke drive jaringan perusahaan. Oleh karena itu drive jaringan saya tidak terhubung kembali secara otomatis, hanya membukanya di Windows Explorer menghubungkannya kembali.

Saya telah membuat file batch kecil untuk memulai VPN, menyambungkan kembali drive jaringan, dan memulai beberapa aplikasi yang selalu saya gunakan.

Dalam file Batch saya, saya memiliki yang berikut ini:

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

Itu Taskkill /fi "windowtitle eq" perintah peka huruf besar kecil!

Claus Melander
sumber
Terima kasih kawan, ini adalah satu-satunya jawaban di seluruh utas ini yang membantu saya. Tentu saja saya membatalkannya, tetapi saya belum memiliki kemampuan downvote untuk pos-pos di atas Anda.
prl77
Btw, saya tidak menemukan "taskkill" memiliki sensitivitas case, setidaknya tidak pada Win 7 x64 dengan patch terbaru.
prl77
Catatan: Jika parameter taskkill di atas tidak berfungsi untuk Anda, coba gunakan TASKLIST / FI "IMAGENAME eq explorer.exe" / V untuk melihat judul jendela yang benar. String filter saya untuk TASKKILL akhirnya menjadi "windowtitle eq c $ *"
Luke
Terima kasih atas komentar Anda. Itu sangat membantu saya
Pawel
7

buat file batch (refreshletters.cmd) dengan perintah ini di dalamnya

( ini hanya akan bekerja di dalam file batch )

Diuji pada Win7 dan XP untuk menyegarkan huruf driver 'terputus' dan 'Tidak tersedia' di jendela konsol (baris perintah).

@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
          )
     )
 )
Brian
sumber
Karena kami tidak tahu tingkat keahlian OP, mungkin ide yang bagus untuk memperluas jawaban Anda.
Tog
net use bekerja untuk saya untuk drive yang dipetakan tidak tersedia di Win7. ty
Mat M
Saya belum memiliki kemampuan downvoting, tetapi jawaban ini tidak membantu saya. Lihat posting di bawah ini oleh Claus Melander yang melakukannya. Saya juga meninggalkan komentar di sana.
prl77
1
Ini bekerja (diuji dengan win7 x64), tetapi itu tergantung pada output tergantung bahasa net use, saat memindai Unavailable. Tetapi untuk win7 Jerman Anda dapatkan Nicht verfgb, Anda perlu memodifikasi solusi untuk bahasa Anda
jeb
Ini bekerja untuk saya, kecuali untuk satu bagian yang memiliki ruang di jalur jaringan ... Lagi pula, saya akhirnya melakukan beberapa baris "net use X: \\ share \ path" yang dikodekan dalam file batch dan akan terus memperbarui jika saya pernah mengubah pemetaan drive. Ini adalah solusi terbaik bagi saya karena saya benar-benar tidak ingin harus membuka jendela Explorer untuk mendapatkan drive untuk menyambung kembali ...
Aaron
5

Ini mungkin pertanyaan yang bodoh, tetapi dengan asumsi drive Anda "terputus" adalah H :, apakah Anda mencoba mengubah langsung ke drive?

Ini berfungsi untuk saya di bawah XP SP3:

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.
wfaulk
sumber
2
Command prompt tidak memungkinkan Anda beralih ke drive jaringan yang saat ini terputus. Setidaknya tidak pada ratusan komputer yang saya gunakan ini (WinNT, Win2k, WinXP, WinXP Embedded).
Stephen Jennings
1
Aneh. Aku bersumpah itu berhasil untukku.
wfaulk
itu bekerja untuk saya juga!
Snark
Saya akui saya pernah melihat pekerjaan ini sesekali, tetapi sebagian besar tidak. Saya tidak tahu apa yang menentukan satu atau lain cara, mungkin apakah ada kredensial yang disimpan atau tidak.
Stephen Jennings
1
Oh, saya yakin itu saja. Saya secara otomatis mengautentikasi menggunakan kredensial domain saya.
wfaulk
4

Saya tahu Anda mengatakan "penggunaan bersih" tidak berfungsi untuk Anda - tetapi inilah yang dapat Anda coba.

Jalankan file batch dengan net use / DELETE option untuk menghapus koneksi yang ada / persisten Dan kemudian Anda bisa menggunakan net use dengan opsi / SAVECRED untuk menggunakan kembali kredensial passowd yang digunakan int eh logon terakhir yang berhasil. Saya tidak yakin apakah ini akan mengatasi masalah Anda tetapi layak untuk dilihat.

Critical Skill
sumber
Ini bukan yang saya butuhkan, tapi ini pasti hal yang berguna untuk diketahui. Ini memecahkan masalah lain yang saya alami.
Stephen Jennings
2

Saya memiliki masalah yang sama dengan beberapa koneksi, dan intermiten. Saat saya me-reboot komputer, terkadang koneksi "baik" dan kadang tidak. Saya tidak memiliki masalah kata sandi karena saya menggunakan LAN perusahaan, tetapi saya masih memiliki aspek lain dari masalahnya.

Saya telah membuat file batch bernama ex.bat, dan menyimpannya (bersama banyak hal lainnya) di direktori \ util yang saya masukkan ke path saya. Saya dapat mengetik "ex h:" dan itu akan menjalankan Windows Explorer dan mengaturnya untuk langsung ke drive h :. Ini adalah file batch:

start explorer /e,/select,%1

Ini bekerja, dengan penekanan tombol yang jauh lebih sedikit. Atau jika tidak bekerja pada awalnya, tekan tombol Enter untuk membuka folder h: root dan tampilkan isinya. Atau, ketik "ex h: \ sub" di mana subfolder "sub" ada.

Masalah ini tampaknya menjadi jauh lebih buruk baru-baru ini, mungkin karena salah satu tambalan keamanan Windows XP.

Hal lain untuk dicoba adalah di sisi server. Pada server Windows, memodifikasi kunci Registry seharusnya menjaga server dari memutuskan koneksi pada batas waktu. Saya melakukan ini pada hampir semua server kami. File tersebut adalah:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"autodisconnect"=dword:ffffffff
Warren
sumber
Dari proses yang dijalankan sebagai pengguna lain, start explorer hanya akan berfungsi jika kedua pengguna memiliki pengaturan "Jalankan folder windows dalam proses terpisah".
ivan_pozdeev
1

Saya memiliki masalah yang sama dan menemukan saya dapat memaksa koneksi ulang dengan "dir x:" sederhana dari baris perintah (di mana X: adalah drive yang dipetakan tetapi terputus.) Ini dari sistem Server 2003 untuk memetakan drive pada XP dan Win7 komputer.

Saya membuat file batch, wake_network_drives.bat, dengan dua baris ini:

    dir x:
    dir z:

dan mengatur tugas yang dijadwalkan untuk menjalankannya setiap malam sebelum program cadangan yang gagal karena drive kadang-kadang ditampilkan sebagai terputus.

StanZ
sumber
Ini bekerja. Bahkan jika dir Perintah memberi Anda kesalahan, itu cenderung untuk membangkitkan drive jaringan terputus. Ini adalah jawaban terbaik dari semuanya.
Elliot Cameron
0

Ketik saja:

NET USE H: \\server\share

(di mana H: tentu saja surat pengantar Anda)

Ketik 'NET /? GUNAKAN 'untuk melihat semua opsi yang diberikan perintah ini kepada Anda.

Zoran
sumber
Ini tidak bekerja. Huruf drive sudah dipetakan, hanya terputus (biasanya komputer lain di-reboot). Ketika Anda menjalankan ini, itu mengeluh bahwa perangkat sudah digunakan.
Stephen Jennings
Ya, saya menguji ini sekarang dan mendapat "Nama perangkat lokal sudah digunakan."
Stephen Jennings
1
Ini berfungsi untuk saya ... tapi saya menggunakan Windows 7, dan sebenarnya drive itu terhubung kembali dengan sendirinya ... Coba NET USE H: simple (tanpa path), yang akan membuat koneksi kembali. Saya lupa bagaimana dulu di XP.
Zoran
0

Jika Anda tidak menentang untuk menyimpan kata sandi ini dalam teks biasa dalam satu batch, Anda dapat membuat skrip penghapusan dan pembuatan ulang termasuk kredensial.

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

Saya tahu itu tidak memenuhi persyaratan Anda untuk tidak menghapus bagian, tetapi itu menyelesaikan akar masalah harus mengingat kata sandi.

MDMarra
sumber
Sebagai seorang profesional TI, saya saya menentang, baik untuk saya sendiri dan untuk pengguna saya.
ivan_pozdeev
0

TL; ringkasan DR: menggunakan net use dan if exist

Saya mengalami masalah terkait saat membuat skrip cadangan malam hari. Itu harus memeriksa apakah komputer dihidupkan (menggunakan ping), mengirim paket ajaib untuk menyalakannya jika diperlukan (menggunakan MC-WOL ), tunggu Windows untuk boot, kemudian buat koneksi ke share SMB dan tunggu sampai ada.

Sementara jawaban lain di sini luar biasa, saya tidak ingin huruf drive yang dipetakan muncul / tidak ada, atau untuk memutuskan apa pun yang sedang dikerjakan pengguna, juga tidak memiliki jendela Explorer yang berkeliaran. yaitu tujuan tidak ada gangguan pengguna .

Berikut sejumlah kode yang mungkin bermanfaat bagi Anda:

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

Jika Anda suka, Anda dapat mengganti alamat IP di atas dengan nama host (mis. server1 ).

net use diperlukan jika tidak ada koneksi yang ada. Saya mengalami beberapa kasus sudut di mana itu saja tampaknya tidak cukup untuk "membangunkan" saham (mis. Jika ada koneksi sebelumnya ada dalam keadaan terputus). Saya menemukan if exists arahan memiliki efek yang sama dengan alternatif yang disebutkan dalam jawaban lain (seperti pushd, dir, Explorer, dll), tetapi tampaknya pendekatan yang lebih ringan.

rkagerer
sumber
0

Jawaban dari StanZ bekerja untuk saya, tetapi saya harus dapat secara sistematis menentukan drive yang dipetakan tanpa status OK, karena pengguna di domain kami mendapatkan pemetaan drive yang berbeda. Saya kode di sini untuk menjalankan sebagai versi yang berdiri sendiri, yang dijalankan net use sebelum dan sesudah kode aktual, sehingga Anda dapat melihat hasilnya, tetapi Anda hanya perlu menyalinnya FOR pernyataan (tiga baris) ke dalam kode Anda untuk mendapatkan hasil yang diinginkan.

@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  
Charlie C
sumber
0

Mungkin pertanyaan lama tetapi masih relevan pada 2017 dan Windows 10 karena jaringan berbagi sering tidak terhubung kembali atau dilampirkan dengan benar oleh windows karena berbagai alasan. Berdasarkan masalah ini dan tidak adanya solusi kerja nyata dan penuh kerja nyata saya membuat proyek Github yang berisi Tugas Penjadwal dan VBS yang memecahkan masalah dengan hanya mencoba menyambungkan kembali drive setelah melanjutkan atau masuk jika tidak terhubung atau online.

Script sepenuhnya dapat dikonfigurasi dan dapat diatur tergantung pada kebutuhan pengguna yang sebenarnya.

Jalan ke proyek Github

thex
sumber