不确定如何批量转换变量

时间:2015-01-01 03:56:54

标签: batch-file

我一直在尝试将此批处理文件中的变量从一个转换为另一个。

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”。我做错了什么?

2 个答案:

答案 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(其中n0..9作为参数的值。要检索<变量的em> value ,您使用%varname%,例如%1% - 哪个批次将解释为参数#1 + a %,而不是变量{的内容{1}}。 Ë 解决方案:始终使用字母字符开始变量名(也有几个符号)

1是一个需要理解解析过程的高级结构,因此我不会通过尝试解释它来混淆问题。

也许您应该检查CALL echo %%var%input%%%指令(在提示符处输入choice)以从菜单样式的列表中进行选择。

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