マップされたネットワークドライブをコマンドラインから再接続できますか?


32

毎日、Windowsコマンドプロンプトで、マップされているが切断されているネットワークドライブにアクセスする必要があることに気づきます。このドライブをマップ解除および再マップせずに再接続するコマンドをまだ見つけていません(これらのコンピューターを所有していないため、パスワード推測ゲームにつながります)。また、このスクリプトを作成して、毎晩何らかの理由でドライブが切断された場合にドライブが再接続されるようにしたいと考えています。

私が現在持っている最速の解決策は次のとおりです。

  1. start.」と入力してエクスプローラーを開き、
  2. Alt- Dアドレスバーにフォーカスするには、
  3. 必要なドライブ文字を入力してEnterキーを押し、ドライブの内容が表示されるまで待ちます。
  4. 最後に、エクスプローラーを閉じて、コマンドプロンプトに戻ります。

私はそれがささいな不便さであることを知っています、しかし、私はしばしばGUIを通して何かをすることがひどい遅いVNCまたはPCAnywhere接続を通してこれをしているので、より良い解決策があるかどうか疑問に思っています。


1
`dir h:\`を実行するとどうなりますか?
wfaulk

3
「start。<enter>」と入力する代わりに、win-Eを実行して5回のキーストロークを保存できます;-)
fretje

1
マッピングされたドライブの代わりに、\\ server \ shareパスを使用して、それを「解決」しました。必要に応じてファイルをコピーするだけです。(それが私の問題でした)
Peterdk

回答:


12

たぶん試してみるpushd \\server\share


2
これが必要なものかどうかはわかりません。Pushdは一時的なドライブ文字を作成するように見えます。既にドライブ文字がマップされていますが、共有は切断されています(エクスプローラーに赤いXが表示され、「切断されたネットワークドライブ」というラベルが付いています)。たぶん私は間違っています。
スティーブンジェニングス

ええ、その方法でアクセスすると、ドライブが再接続する可能性があります。を使用popdして、ドライブ文字を削除できます。
wfaulkが

次回、これに遭遇したときに試してみます。デバイスが使用中であると言って失敗するか、間違ったドライブ文字を共有に接続すると思われます。
スティーブンジェニングス

2
私はこれを試しましたが、実際に機能しました。私は最初にプッシュされた共有を実行し、次にポップして余分なドライブ文字のマッピングを解除し、マップしたドライブが再び接続されたことを見つけました。これは間違いなく賛成票であり、数日以内に短い回答が得られなければ、これは受け入れられます。
スティーブンジェニングス

1
まだ投票権はありませんが、この答えは私には何の役にも立ちませんでした。以下の投稿を参照して、どれが行われたかを確認してください。私もそこにコメントを残しました。
prl77

8

会社のネットワークドライブに接続するVPNプログラムを実行するには、Windows 7を起動する必要があります。したがって、ネットワークドライブは自動的に再接続せず、Windowsエクスプローラーで開くだけで再接続されます。

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

ところで、少なくとも最新のパッチを適用したWin 7 x64では、大文字と小文字が区別される「taskkill」は見つかりません。
prl77

注:上記のtaskkillパラメーターが機能しない場合は、TASKLIST / FI "IMAGENAME eq explorer.exe" / Vを使用して、正しいウィンドウタイトルを確認してください。TASKKILLのフィルター文字列は、「windowtitle eq c $ *」になりました
ルーク

Thx Lukeのコメント。それは本当に助けてくれました
パウエル

7

これらのコマンドを含むバッチファイル(refreshletters.cmd)を作成します

これらはバッチファイル内でのみ機能します

コンソールウィンドウ(コマンドライン)の 'Disconnected'および 'Unavailable'ドライバー文字を更新するために、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
          )
     )
 )

OPの専門知識のレベルがわからない場合は、回答を拡大することをお勧めします。
Tog

net useWin7で使用できないマップされたドライブで動作します。ty
マットM

1
まだ投票権はありませんが、この答えは私には何の役にも立ちませんでした。以下のClaus Melanderによる投稿を参照してください。私もそこにコメントを残しました。
prl77

1
動作します(win7 x64でテスト済み)がnet use、をスキャンするときに、の言語依存の出力に依存しますUnavailable。しかし、ドイツ語のwin7を取得Nicht verfgbするには、言語のソリューションを変更する必要があります
-jeb

これは私にとってはうまくいきましたが、ネットワークパスにスペースがあった1つの共有を除いて...とにかく、バッチファイルでハードコードされた「net use X:\\ share \ path」行を実行しました。ドライブマッピングを変更した場合、最新の状態に保ちます。これは、ドライブを再接続するためにエクスプローラーウィンドウをポップして開く必要が本当にないので、私にとって最適なソリューションです
アーロン

6

これはおそらく愚かな質問ですが、「切断された」ドライブがH:であると仮定して、ドライブに直接変更しようとしましたか?

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オプションを指定してnet useを使用すると、最後に成功したログオンで使用されるpassowd資格情報を再利用できます。これで問題が解決するかどうかはわかりませんが、検討する価値はあります。


これは私が必要なものではありませんが、これは間違いなく知っておくと便利です。これは私が持っていた別の問題を解決します。
スティーブンジェニングス

2

複数の接続で同じ問題が発生し、断続的に発生します。コンピューターを再起動すると、接続が「良好」な場合とそうでない場合があります。会社のLANにいるのでパスワードの問題はありませんが、それでも問題の別の側面はあります。

ex.batと呼ばれるバッチファイルを作成し、パスに入れた\ utilディレクトリに(他の多くのものと一緒に)保存しました。「ex h:」と入力すると、Windowsエクスプローラーが実行され、h:ドライブに直接移動するように設定されます。バッチファイルは次のとおりです。

start explorer /e,/select,%1

これは、はるかに少ないキーストロークで機能します。または、最初に機能しない場合は、Enterキーを押してh:ルートフォルダーを開き、内容を表示します。または、サブフォルダー「sub」が存在する場所に「ex h:\ sub」と入力します。

この問題は、おそらくWindows XPセキュリティパッチの1つが原因で、さらに悪化しているようです。

試すべきもう1つのことは、サーバー側です。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:はマップされているが切断されたドライブでした)。コンピューター。

次の2行のバッチファイル、wake_network_drives.batを作成しました。

    dir x:
    dir z:

ドライブが時々切断されていると表示されたために失敗していたバックアッププログラムの前に毎晩実行するようにスケジュールされたタスクを設定しました。


これは動作します。dirコマンドでエラーが発生した場合でも、切断されたネットワークドライブを起動する傾向があります。これはそれらすべてのベストアンサーです。
エリオットキャメロン

0

入力するだけです:

NET USE H: \\server\share

(H:はもちろんあなたのドライブ文字です)

「NET /?」と入力します このコマンドが提供するすべてのオプションを見るために使用してください。


これは動作しません。ドライブ文字はすでにマップされており、切断されています(通常、他のコンピューターが再起動されました)。これを実行すると、デバイスがすでに使用されているというエラーが表示されます。
スティーブンジェニングス

はい、私はこれを今すぐテストし、「ローカルデバイス名はすでに使用されています」という情報を得ました。
スティーブンジェニングス

1
それは私のために動作します...しかし、私はWindows 7上にあり、実際にドライブはそれ自体で再接続します... XPでの使用方法を忘れてしまいました。
ゾラン

0

これらのパスワードをプレーンテキストでバッチで保持することに反対していない場合は、資格情報を含む削除および再マップをスクリプト化できます。

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

共有を削除しないという要件を満たしていませんが、パスワードを記憶しなければならないという問題の根本を解決します。


IT Proのように、私は、午前自分のために、私のユーザーのための両方、反対しました。
ivan_pozdeev 16

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ディレクティブは、他の回答(のように述べた代替案と同様の効果がありpushddirExplorer、など)が、それは軽量のアプローチに見えました。


0

StanZからの答えはうまくいきましたが、ドメイン内のユーザーが異なるドライブマッピングを取得するため、ステータスが[OK]でなく、マップされたドライブをプログラムで判別できなければなりませんでした。ここではnet use、実際のコードの前後に実行されるスタンドアロンバージョンとして実行するようにコーディングしました。これにより、結果を確認できますがFOR、目的の結果を得るには、1つのステートメント(3行)をコードにコピーするだけです。

@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

古い質問かもしれませんが、さまざまな理由でWindowsによってネットワーク共有が適切に再接続または接続されないことが多いため、2017年とWindows 10でも関連があります。この問題と実際の実用的で完全に機能するソリューションの欠如に基づいて、スケジューラタスクとVBSを含むGithubプロジェクトを作成しました。

スクリプトは完全に構成可能であり、実際のユーザーのニーズに応じてセットアップできます。

Githubプロジェクトへのパス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.