2012-07-25 3 views
1

누군가이 사람이 나를 도울 수 있습니까? 내 현재 내부 IP 주소를 기반으로 몇 대의 네트워크 드라이브를 연결하려고하는 배치 파일이 있습니다. 그냥 출력한다이상한 배치 파일 문제

홈 192.168.2.99 지하실

: 홈 192.168.2.99 여기

코드 것 :

@echo off 

@for /F "tokens=2 delims=:" %%i in ('"ipconfig | findstr IP | findstr 192."') do SET LOCAL_IP=%%i 

@if ("%LOCAL_IP%" == "192.168.2.99") Call ConnectHome else (Call ConnectBasement) 


:ConnectHome 
@echo Home %LOCAL_IP% 

:ConnectBasement 
@echo Basement 
@REM net use R: \\192.168.2.98\Storage 
@REM net use S: \\192.168.2.98\MyStuff 
@REM net use T: \\192.168.2.98\Server 

문제는 다음과 같은 출력된다 IF 문을 다음으로 대체하려고 시도했습니다.

@if ("%LOCAL_IP%" == "192.168.2.99") goto ConnectHome else (goto ConnectBasement) 
012 3,516,

과 :

@if ("%LOCAL_IP%" == "192.168.2.99") goto :ConnectHome else (goto :ConnectBasement) 

결과는 항상 동일합니다 ... OS는 것 후

답변

2

Call은 당신이 현재하고있는 일 (here 참조)에서 다른 배치 파일을 호출하기위한 것입니다. 레이블을 전달하면 해당 레이블에서 실행되지만 파일의 끝까지 실행되므로 ConnectBasement 행에 도달하면 중지되지 않습니다.

아마도 파일 아래에 :END 레이블을 추가하고 ConnectBasement 라인 바로 앞에 Goto :END을 추가하면됩니다. 일관성을 위해 전체적으로 대신 Goto을 사용하는 것이 좋습니다.

+0

많이 감사 (;-) 청결이 더 구현하기 위해 PowerShell을 배우고 그 기능을 기능을 사용, 또는)

을 (당신은 또한 당신이 원하는 경우., 레이블을 정의하지 않고 Goto :EOF을 사용할 수 있습니다) – Kevin

1

프로 윈도우 7 : ConnectBasement : ConnectHome, 그냥 간다. @echo Home %LOCAL_IP% 바로 아래에 goto :eof을 추가하십시오.

1

다음을 실행하는 것을 잊지 않았습니까? ConnectHome 부분? 나는 잘 모르겠다. 그러나 나는 그 배치가 단순히 "지하실"을 인쇄하면서 계속된다고 생각한다.

편집 : 제론 그것에 나를 이길 :)