Batch file 批处理文件变量操作
有人知道为什么这不起作用吗?我希望它请求一个字符串,例如1、2或exampletext。然后检查输入值是否为1,然后将变量更改为ABC,如果为2,则更改为DEF,否则保持不变Batch file 批处理文件变量操作,batch-file,Batch File,有人知道为什么这不起作用吗?我希望它请求一个字符串,例如1、2或exampletext。然后检查输入值是否为1,然后将变量更改为ABC,如果为2,则更改为DEF,否则保持不变 @echo off set /p id="Enter ID: " %=% IF "%id%" == "1"( set id="ABC" ) ELSE ( IF "%id%" == "2"( set id="DEF" ) ELSE ( PING 127.0.0.1 -n 0.1
@echo off
set /p id="Enter ID: " %=%
IF "%id%" == "1"(
set id="ABC"
)
ELSE (
IF "%id%" == "2"(
set id="DEF"
)
ELSE (
PING 127.0.0.1 -n 0.1 >nul
)
)
Start "" "C:\Users\Comp\Desktop\livestreamer-1.5.2-win32\livestreamer.exe" twitch.tv/%id% mobile_High
您只是缺少了几个空格(在
if
中的左括号之前)。和else
需要与右括号“”在同一行:
IF "%id%" == "1" (
set id=ABC
) ELSE (
IF "%id%" == "2" (
set id=DEF
) ELSE (
PING 127.0.0.1 -n 0.1 >nul
)
)
还请注意,集合
中=
后面的引号会逐字包含在变量中,这不是您想要的
您还可以稍微简化一下:
if "%id%=="1" (
set id=ABC
) else if "%id%=="2" (
set id=DEF
) else (
ping localhost -n 1 >nul
)
在第一页的帮助if中甚至有这样的解释:“ELSE子句必须与if后面的命令出现在同一行。”您只是缺少了一些空格(在if中的左括号之前)。和
else
需要与右括号“”在同一行:
IF "%id%" == "1" (
set id=ABC
) ELSE (
IF "%id%" == "2" (
set id=DEF
) ELSE (
PING 127.0.0.1 -n 0.1 >nul
)
)
还请注意,集合
中=
后面的引号会逐字包含在变量中,这不是您想要的
您还可以稍微简化一下:
if "%id%=="1" (
set id=ABC
) else if "%id%=="2" (
set id=DEF
) else (
ping localhost -n 1 >nul
)
在第一页的帮助if中甚至有这样的解释:“ELSE子句必须与if后面的命令出现在同一行。”尽管Joey已经指出了错误的原因,但我还是忍不住要向您展示一种不同的方法:
@echo off
setlocal EnableDelayedExpansion
rem Define the table of equivalences:
set equiv[1]=ABC
set equiv[2]=DEF
set /p "id=Enter ID: " %=%
if defined equiv[%id%] (
set id=!equiv[%id%]!
) ELSE (
PING 127.0.0.1 -n 0.1 >nul
)
Start "" "C:\Users\Comp\Desktop\livestreamer-1.5.2-win32\livestreamer.exe" twitch.tv/%id% mobile_High
此方法使用数组。如果您对这种方法感兴趣,请搜索“延迟扩展”和“批处理数组”。尽管Joey已经指出了错误的原因,但我还是忍不住要向您展示一种不同的方法:
@echo off
setlocal EnableDelayedExpansion
rem Define the table of equivalences:
set equiv[1]=ABC
set equiv[2]=DEF
set /p "id=Enter ID: " %=%
if defined equiv[%id%] (
set id=!equiv[%id%]!
) ELSE (
PING 127.0.0.1 -n 0.1 >nul
)
Start "" "C:\Users\Comp\Desktop\livestreamer-1.5.2-win32\livestreamer.exe" twitch.tv/%id% mobile_High
此方法使用数组。如果您对这种方法感兴趣,请搜索“延迟扩展”和“批量阵列”。非常感谢!我不知道1-2个空格会导致错误。我对批处理编码还是新手。非常感谢!我不知道1-2个空格会导致错误。我对批处理编码还是新手。它使用了几个看起来像数组的环境变量;)-但实际上,如果可能值的列表变长,这是一个不错的选择?批处理中没有单个数组<代码>:-)@endro:对不起,“安斯加”,我忘了<代码>;-)代码>它使用几个看起来像数组的环境变量;)-但实际上,如果可能值的列表变长,这是一个不错的选择?批处理中没有单个数组<代码>:-)@endro:对不起,“安斯加”,我忘了<代码>;-)代码>