批处理 - 仅在第二次运行时才可变工作
我尝试制作一个简单的应用程序,将SSH连接到我最喜欢的服务器。批处理 - 仅在第二次运行时才可变工作
它实际上在工作!
但问题是,当我添加第三个选项(这是自定义)..
所以我添加了第三选项,使应用程序要求用户IP Address
和Username
但是,值插入的不变量集...
而SSH连接会失败,因为在IP Address
和Username
没有价值..
然后我再次运行批处理文件,选择第三个选项,然后插入另一个值,然后该值似乎是在第一次运行中设置的值。
对不起我的英文不好...
任何人都可以试试下面我的剧本,并尝试以不同的值的两倍连接。然后你会明白。
@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!
)
所有你需要做的就是设置变量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!
)
由于用户输入需要已知值,因此我还建议使用'Choice'命令,_(如果您的操作系统兼容)_。在命令提示符下输入'Choice/?'获取更多信息。 – Compo
@Gerhard Barnard ,,谢谢!这是工作 ... –
你需要一个[延迟扩展(https://ss64.com/nt/delayedexpansion.html) – npocmaka
@npocmaka ,,谢谢你的链接!现在我明白了...... –