Connect Network Drives on Windows
This commit is contained in:
190
connect_network_drives.bat
Normal file
190
connect_network_drives.bat
Normal file
@@ -0,0 +1,190 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
REM This is version 2 of the script. Completely changed how it detects off-line network drives since the old method caused issues for some people.
|
||||
echo RECONNECT OFFLINE NETWORK DRIVES
|
||||
echo //Created by Battle(non)sense - https://www.youtube.com/BattleNonSense
|
||||
echo --------------------------------------------------------------------
|
||||
echo This script is a workaround for the 'Could not connect all network drives' issues in Windows, where an 'offline' network drive can still be accessed inside windows explorer.
|
||||
echo --------------------------------------------------------------------
|
||||
|
||||
REM We need to wait for the network to get ready first
|
||||
|
||||
echo .
|
||||
echo Waiting for Network
|
||||
set LC=0
|
||||
goto :waitfornet_
|
||||
:waitfornet
|
||||
timeout /t 1 /NOBREAK >nul
|
||||
:waitfornet_
|
||||
route print -4 | findstr /C:" 0.0.0.0 " >nul 2>nul
|
||||
if not errorlevel 1 goto :NetReady
|
||||
set /A LC=%LC%+1
|
||||
if %LC% LSS 30 goto :waitfornet
|
||||
goto :eof
|
||||
|
||||
:NetReady
|
||||
REM Once the network is ready we need to wait a bit before the next step or it might fail on some PC's
|
||||
echo .
|
||||
echo Network online
|
||||
timeout /t 5 /nobreak >nul
|
||||
goto :RefreshNetDrives
|
||||
|
||||
:RefreshNetDrives
|
||||
REM Now we create a list of all network drives that are not 'OK'
|
||||
echo .
|
||||
echo Searching for Offline Network Drives:
|
||||
|
||||
set "OfflineNetDrives_cnt=0"
|
||||
|
||||
net use | findstr /b /v OK |findstr "A:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=A:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "B:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=B:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "C:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=C:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "D:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=D:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "E:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=E:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "F:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=F:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "G:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=G:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "H:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=H:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "I:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=I:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "J:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=J:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "K:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=K:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "L:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=L:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "M:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=M:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "N:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=N:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "O:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=O:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "P:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=P:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "Q:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=Q:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "R:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=R:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "S:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=S:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "T:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=T:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "U:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=U:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "V:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=V:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "W:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=W:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "X:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=X:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "Y:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=Y:"
|
||||
)
|
||||
net use | findstr /b /v OK |findstr "Z:"
|
||||
if not errorlevel 1 (
|
||||
set /a OfflineNetDrives_cnt+=1
|
||||
set "OfflineNetDrives[!OfflineNetDrives_cnt!]=Z:"
|
||||
)
|
||||
|
||||
echo !OfflineNetDrives_cnt! OFFLINE Network Drives found
|
||||
echo .
|
||||
REM Now we use the windows explorer to access each OFFLINE Network share
|
||||
echo Reconnecting All Network Shares:
|
||||
for /L %%n in (1 1 !OfflineNetDrives_cnt!) DO ( echo !OfflineNetDrives[%%n]! & Start /min explorer "!OfflineNetDrives[%%n]!")
|
||||
goto :CleanUp
|
||||
|
||||
:CleanUp
|
||||
REM Explorer needs a bit to open all windows and access the drives, so we have to wait a bit
|
||||
timeout /t 5 /nobreak >nul
|
||||
echo .
|
||||
|
||||
REM Now we close the explorer windows which we opened before
|
||||
echo Cleanup: Closing Explorer windows
|
||||
|
||||
for /L %%n in (1 1 !OfflineNetDrives_cnt!) DO (
|
||||
for /f "tokens=2 delims=," %%a in ('tasklist /fi "imagename eq explorer.exe" /v /fo:csv /nh ^| findstr /r "!OfflineNetDrives[%%n]!"') do (echo !OfflineNetDrives[%%n]! & taskkill /pid %%a)
|
||||
)
|
||||
echo .
|
||||
echo Done
|
||||
timeout /t 5 /nobreak >nul
|
||||
Reference in New Issue
Block a user