不确定如何批量转换变量

Unsure of how to convert variables in batch

我在尝试将此批处理文件中的变量从一个变量转换为另一个变量时遇到了一些问题。

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%

我试图回显最初回显的内容(即 "variable one"、"variable two"),但它仍然显示 "1"、"2" 和"3" 到我的屏幕。我做错了什么?

当您说 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%
@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(其中 n0..9 作为参数值. 要检索变量的 value,您可以使用 %varname%,例如 %1% - 哪个批处理将解释为参数 #1 + a %,而不是变量 1 的内容。 电子 解决方案:始终以字母字符开头变量名(也有一些符号)

CALL echo %%var%input%%%是一个高级结构,需要了解解析过程,所以我不会试图解释它来混淆事情。

也许您应该检查 choice 指令(在提示符下键入 choice /? )以从菜单样式的列表中进行选择。

这取决于您真正想做什么 - 方法可能取决于应用程序。琐碎的例子可能会产生误导。