Het blijkt een in verschillende vormen regelmatig terugkerend probleem dat het
(zeker via een WiFi verbinding) lang kan duren voordat de netwerkverbinding naar je NAS
(of een andere netwerkresource) tot stand komt, terwijl diverse programma's al proberen
van de NAS gebruik te maken.
Plerry heeft daarvoor enige tijd geleden een command-script geschreven voor het mappen van NAS netwerkdrives
waarin herhaaldelijk naar je NAS wordt gepingt, totdat dat een aantal malen succesvol is geweest,
en pas daarna d.m.v. van "net use" commando's de gewenste netwerkdrives mapt. (origineel bericht:
viewtopic.php?f=70&t=4839)
Tijd om dat eens een ereplaatsje te geven.
Sla onderstaande code op in een bestand met de extensie ".cmd", verander naar behoefte de drive-letters
en folder-namen en REM of un-REM naar behoefte en sla het op in de Windows startup-folder.
Wijzig (indien relevant) in de regel "SET nas_usr=NasUserName" de "NasUserName" in de gewenste user-name op de NAS.
Denk uiteraard ook om het IP-adres (SET nas_ip=) en het eventuele password (SET nas_pwd=).
@ECHO OFF
REM !---- Command Script that waits until the network connection to a (local) network resource has been
REM !---- established, and only then mounts specified network locations as mapped drives.
REM !---- Useful in case setting up the network connection might take long following startup.
REM !---- This might e.g. apply to WiFi connections
REM !---- Script verified for WinXP (English version)
REM !---- Define the NAS IP-address or network name (e.g. "192.168.1.5" or "Diskstation"), but use -NO- quotes (")
REM !---- IP-address should always work; network name only when client and NAS are in the same Workgroup/Domain
SET nas_ip=192.168.1.6
rem SET nas_ip=Diskstation
REM !---- Use this section if NAS-username and/or -password differs from Windows-username and/or -password
REM !---- Omit this section ("REM" all lines) if Windows and NAS user-name and -password are identical
SET nas_usr=NasUserName
REM !---- Use the next line to be prompted for the NAS-user password. Preferred solution, safe
SET /p nas_pwd=Password for remote user %nas_usr% on \%nas_ip%: ?
REM !---- Use the next line to put the NAS-user password in this file. Non-preferred, unsafe
rem SET nas_pwd=NasPassword
REM !---- Modify the following variables according to need; value always between 1 and 254 (incl)
SET /a seconds_between_pings=3
SET /a max_attempts=90
SET /a seconds_of_end_message=10
SET /a min_good_pings=3
REM !---- Use the next line if you want to delete the links to ALL mapped network drives
rem NET USE * /DELETE
REM !---- Use the next line(s) (and modify drive-letters) if you want to delete specific mapped network drives
rem NET USE K: /DELETE
rem NET USE L: /DELETE
SET /a attempts=1
SET /a good_pings=0
SET display=Waiting for connection to %nas_ip% .
REM !--- Mind the white-space ( ) behind the last period (.) above !
:try_again
CLS
ECHO %display%
REM !--- The following line serves as a "wait" statement
PING -n %seconds_between_pings% -w 1 127.0.0.1 >NUL
REM !--- You might (?) need to change "Reply from" below for non-English Windows versions
PING -n 1 -w 200 %nas_ip% | FIND "Reply from %nas_ip%" >NUL
IF %ERRORLEVEL% EQU 0 (SET /a good_pings+=1)
IF %good_pings% EQU %min_good_pings% GOTO :conn_established
SET display=%display:. =.. %
SET /a attempts+=1
IF %attempts% LEQ %max_attempts% GOTO :try_again
ECHO.
ECHO Connection to %nas_ip% failed to establish within reasonable time
ECHO.
ECHO Unable to map network drive(s) to %nas_ip%
ECHO.
GOTO :almost_oef
:conn_established
ECHO.
ECHO Connection to %nas_ip% established
ECHO.
ECHO Now mapping network drive(s)
IF N%nas_usr%==N (SET userdata="") ELSE (SET userdata="/USER:%nas_usr% %nas_pwd% ")
rem also OK for XP: IF defined nas_usr (SET userdata="/USER:%nas_usr% %nas_pwd% ") ELSE (SET userdata="")
rem not OK for XP: IF EXIST %%nas_usr%% (SET userdata="/USER:%nas_usr% %nas_pwd% ") ELSE (SET userdata="")
REM !---- add line(s), change drive-letter (e.g. K:) and NAS folder-name (e.g. nas_folder1) according to need
NET USE K: \%nas_ip%nas_folder1 %userdata:"=%/PERSISTENT:NO
NET USE L: \%nas_ip%nas_folder2 %userdata:"=%/PERSISTENT:NO
:almost_oef
PING -n %seconds_of_end_message% -w 1 127.0.0.1 >NUL
Deze code wordt verstrekt "as is".
Uiteraard kan het gebruikte wacht-principe ook worden gebruikt om andere programma's dan netwerkmappings pas op
te starten als de netwerkverbinding tot stand is gekomen.
Vervang hiertoe de sectie waarin de netwerkdrives middels "net use" worden gemapt door het commando om
de gewenste applicatie op te starten.