2014-09-19 4 views
0

여러 가지를 시도했지만 모든 것이 실패합니다. 나는 끊임없이 RDP를 사용하여 다양한 터미널 서비스에 로그인해야하며 .bat로 모든 것을 제어 할 수 있기를 원합니다. 다음은 최근 실패한 시도입니다. 실행하면 두 연결이 모두 열립니다.배치 파일에서 "IF"또는 "GOTO"를 사용하여 특정 RDP 연결 열기

@Echo off 

Rem Sets the parameter for the network id. 
set /p Server = "Server> " 
Set User = "User" 
Set Pass = "Password" 

If "%Server%" =="233" (
    GoTo 233 
) Else If "%Server%" =="234" (
    GoTo 234 
) 

Rem RDP Connection to Server 234 
:234 

cmdkey /generic:TERMSRV/RDC234 /user:%User% /pass:%Pass% 
    mstsc /v:RDC234 

Rem RDP Connection to Server 233 
:233 

cmdkey /generic:TERMSRV/RDC233 /user:%User% /pass:%Pass% 
    mstsc /v:RDC233 

Pause 
+0

무엇이 문제이고 ... 무엇이 당신의 질문입니까? – thebjorn

답변

0
@Echo off 

Rem Sets the parameter for the network id. 
set /p Server="Server> " 
Set "User=User" 
Set "Pass=Password" 

If "%Server%"=="233" goto valid 
If "%Server%"=="234" goto valid 
echo Invalid server "%server%" specified 
goto end 

:valid  
Rem RDP Connection to valid Server 
cmdkey /generic:TERMSRV/RDC%server% /user:%User% /pass:%Pass% 
    mstsc /v:RDC%server% 

:END 

Pause 

그것은 당신이 실제로합니다 (server 패턴을 따라야한다) userpass에 대한 값을 입력하고 또는 당신이 억제 한 값으로 userpass 설정 여부를 사용자 코드에서 분명하지 않다.

어느 쪽이든, =의 양쪽에 공백이 있으므로 코드에서 "user Space"을 "사용자"가 아닌 것으로 설정합니다.

앞에서 설명한 방식으로 따옴표를 사용하면 할당 된 값에 줄에 공백이 없어야합니다. 원래 게시 한대로 할당 된 값에는 따옴표가 포함됩니다.

조건이 false의 경우에 if condition goto else...를 사용하는 것은 매우 비논리적이다가, 다음 줄은 훨씬 명확하게 할 것 같다 그래서

if condition goto ... 
if anothercondition goto ... 
rem get here if neither first nor second condition. 

, 실행됩니다.

insructions가 :233에서 실행하고 :244가 동일하기 때문에, 사용자가 고정 된 텍스트 프리픽스 rdc 단순히 맞대기 최대 값을 나타내는 방식으로 %server%를 사용할 수 있고, server 값 바.