2017-09-27 58 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 ,,谢谢!这是工作 ... –

相关问题