2017-09-27 55 views
1

我嘗試製作一個簡單的應用程序,將SSH連接到我最喜歡的服務器。批處理 - 僅在第二次運行時纔可變工作

它實際上在工作!

但問題是,當我添加第三個選項(這是自定義)..

所以我添加了第三選項,使應用程序要求用戶IP AddressUsername

但是,值插入的不變量集...

而SSH連接會失敗,因爲在IP AddressUsername沒有價值..

然後我再次運行批處理文件,選擇第三個選項,然後插入另一個值,然後該值似乎是在第一次運行中設置的值。

對不起我的英文不好...

任何人都可以試試下面我的劇本,並嘗試以不同的值的兩倍連接。然後你會明白。

@echo off 
cls 
set custom_choice=3 
echo Which server do you want to connect? 
echo 1. 232 
echo 2. Kiwire Free Edition 
echo 3. Custom 
echo. 
set /p choice="Enter your choice: " 
echo. 

IF %choice%==1 (
    ::this is comment 
    ssh [email protected] 
) ELSE IF %choice%==2 (
    ssh -i ./key/my-ssh-key-normal [email protected] 
) ELSE IF %choice%==%custom_choice% (
    set /p conIpAddress="Please insert IP Address: " 
    set /p conUsername="Please insert Username: " 
    echo. 
    ssh %conUsername%@%conIpAddress% 

) ELSE (
    echo Wrong choice! Sorry! 
) 
+4

你需要一個[延遲擴展(https://ss64.com/nt/delayedexpansion.html) – npocmaka

+1

@npocmaka ,,謝謝你的鏈接!現在我明白了...... –

回答

1

所有你需要做的就是設置變量setlocal enabledelayedexpansion

@echo off 
cls 
setlocal enabledelayedexpansion 
set custom_choice=3 
echo Which server do you want to connect? 
echo 1. 232 
echo 2. Kiwire Free Edition 
echo 3. Custom 
echo. 
set /p choice="Enter your choice: " 
echo. 

IF %choice%==1 (
    ::this is comment 
    ssh [email protected] 
) ELSE IF %choice%==2 (
    ssh -i ./key/my-ssh-key-normal [email protected] 
) ELSE IF %choice%==%custom_choice% (
    set /p conIpAddress="Please insert IP Address: " 
    set /p conUsername="Please insert Username: " 
    echo. 
    ssh [email protected]!conIpAddress! 

) ELSE (
    echo Wrong choice! Sorry! 
) 
+0

由於用戶輸入需要已知值,因此我還建議使用'Choice'命令,_(如果您的操作系統兼容)_。在命令提示符下輸入'Choice/?'獲取更多信息。 – Compo

+0

@Gerhard Barnard ,,謝謝!這是工作 ... –

相關問題