我一直在尝试将此批处理文件中的变量从一个转换为另一个。
echo Select One:
echo Variable One [1]
echo Variable Two [2]
echo Variable Three [3]
set /p var=
此时,用户将键入1,2或3以继续。代码继续这个。
set "1=Variable One"
set "2=Variable Two"
set "3=Variable Three"
echo %var%
我正在尝试回应最初的回声(即“变量一”,“变量二”),但它仍然在我的屏幕上显示“1”,“2”和“3”。我做错了什么?
答案 0 :(得分:1)
当您说SET 1=Variable One
时,您正尝试将数字创建为变量。这不是合法的变量名称(=
的剩余部分)不能只是一个数字。
我相信你需要的是一个简单的IF
声明:
:Menu
echo Select One:
echo Variable One [1]
echo Variable Two [2]
echo Variable Three [3]
set /p var=
REM Initialize selection.
SET "Selected="
IF "%var%"=="1" SET Selected=Variable One
IF "%var%"=="2" SET Selected=Variable Two
IF "%var%"=="3" SET Selected=Variable Three
REM Make sure a valid selection was made.
IF "%Selected%"=="" (
ECHO Please enter a valid value.
GOTO Menu
)
ECHO You selected: %Selected%
答案 1 :(得分:1)
@ECHO OFF
SETLOCAL
SET "var1=One"
SET "var2=Two"
SET "var3=Three"
SET "input="
SET /p "input=Input 1,2 or 3 ? "
IF DEFINED var%input% CALL echo %%var%input%%%
GOTO :EOF
这是一种做类似事情的方法 - 但这是一个微不足道的人工演示。
你可以将数字设置为变量,但是natch语法定义%n
(其中n
是0..9
作为参数的值。要检索<变量的em> value ,您使用%varname%
,例如%1%
- 哪个批次将解释为参数#1 + a %
,而不是变量{的内容{1}}。
Ë
解决方案:始终使用字母字符开始变量名(也有几个符号)
1
是一个需要理解解析过程的高级结构,因此我不会通过尝试解释它来混淆问题。
也许您应该检查CALL echo %%var%input%%%
指令(在提示符处输入choice
)以从菜单样式的列表中进行选择。
这取决于你真正想做什么 - 方法可能取决于应用程序。琐碎的例子可能会产生误导。