2014-09-19 93 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 2014-09-19 17:10:32

回答

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 

這不是從你的代碼清楚你是否實際上是輸入值userpass(應遵循server模式),或者您在設置userpass給你抑制值。

無論哪種方式,=兩邊的空格都很重要,因此您的代碼設置「用戶空間」而不是「用戶」。

以我已經顯示的方式使用引號將確保分配的值不包括行中存在的任何尾隨空格。正如您最初發布的那樣,分配的值將包含引號。

這是相當不合理的使用if condition goto else...如果條件是假的,下一行會被執行,因此

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

似乎是更加清晰。

由於insructions在:233被執行,並且:244是相同的,棒材server值,可以在示出給定文本前綴rdc簡單地對接起來的值的方式來使用%server%

相關問題