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
지시어는 다른 답변 (같은에서 언급 한 대안과 유사한 효과를 pushd
, dir
, Explorer
, 등),하지만 가벼운 무게 접근 방식을 보였다.