批处理 – 仅在第二次运行时才可以工作

我尝试做一个简单的应用程序,将SSH连接到我最喜欢的服务器。

它实际上在工作!

但问题是,当我添加第三个选项(这是自定义)..

所以我添加第三个选项,让应用程序询问用户的IP AddressUsername

但是,插入的值没有在variables中设置…

而且由于IP AddressUsername没有值,SSH连接将失败。

然后我再次运行batch file,select第三个选项,然后插入另一个值,然后出现的值似乎是在第一次运行中设置的值。

对不起,我的英语不好…

任何人都可以尝试我的脚本,并尝试连接两次不同的值。 那么你会明白。

 @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 root@192.168.0.232 ) ELSE IF %choice%==2 ( ssh -i ./key/my-ssh-key-normal dev@123.123.123.123 ) 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! ) 

所有你需要做的是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 root@192.168.0.232 ) ELSE IF %choice%==2 ( ssh -i ./key/my-ssh-key-normal dev@123.123.123.123 ) 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! )