Batch file 如何避免在批处理中使用一堆IF语句
因此,我正在创建我的第一批文件,我相信有更好的方法。看来我可以实现我想要的,但从我读到的所有惯例来看,这似乎是草率的Batch file 如何避免在批处理中使用一堆IF语句,batch-file,cmd,Batch File,Cmd,因此,我正在创建我的第一批文件,我相信有更好的方法。看来我可以实现我想要的,但从我读到的所有惯例来看,这似乎是草率的 @echo off set /p xyzCode= Please enter the code. set x=0001 set xyz=0002 set xyza=0003 if %xyzCode% ==x echo %x% 问题是我需要大约600个变量,600个if语句 在我工作的地方,产品有两个唯一标识符:代码和装备标识符 我希望能够快速输入代码并获取装备标识符 如果
@echo off
set /p xyzCode= Please enter the code.
set x=0001
set xyz=0002
set xyza=0003
if %xyzCode% ==x echo %x%
问题是我需要大约600个变量,600个if语句
在我工作的地方,产品有两个唯一标识符:代码和装备标识符
我希望能够快速输入代码并获取装备标识符
如果我使用Python,我想答案应该是使用dicts,但需要一种在批处理脚本中实现这一点的方法。听起来像是开关盒的工作
它仍然会占用很多空间,但我相信它们比IF语句要快得多听起来像是开关盒的工作
它仍然会占用大量空间,但我相信它们比IF语句快得多。您可以尝试保留一个单独的文本或csv文件,其中包含所有代码和标识符,如下所示:
@echo off
set /p xyzCode= Please enter the code:
for /f "skip=1 tokens=1,2 delims=, usebackq" %%a IN ("Code&ItemList.txt") do (
if %xyzCode%==%%a echo Material ID is %%b
)
code&ItemList.txt
Code, Material Id
0001, Abcd
0123, Qwerty
4567, Zxcvb
然后,您可以编写如下的批处理脚本:
@echo off
set /p xyzCode= Please enter the code:
for /f "skip=1 tokens=1,2 delims=, usebackq" %%a IN ("Code&ItemList.txt") do (
if %xyzCode%==%%a echo Material ID is %%b
)
键入
以获取/?
以了解其工作原理和原因。您可以尝试保留一个包含所有代码和标识符的单独文本或csv文件,如下所示:
@echo off
set /p xyzCode= Please enter the code:
for /f "skip=1 tokens=1,2 delims=, usebackq" %%a IN ("Code&ItemList.txt") do (
if %xyzCode%==%%a echo Material ID is %%b
)
code&ItemList.txt
Code, Material Id
0001, Abcd
0123, Qwerty
4567, Zxcvb
然后,您可以编写如下的批处理脚本:
@echo off
set /p xyzCode= Please enter the code:
for /f "skip=1 tokens=1,2 delims=, usebackq" %%a IN ("Code&ItemList.txt") do (
if %xyzCode%==%%a echo Material ID is %%b
)
键入
以获取/?
了解其工作原理和原因。如果我理解正确,我认为您可以使用延迟扩展来完成您想要的操作
在脚本顶部添加SETLOCAL ENABLEDELAYEDEXPANSION
。然后,添加echo!%xyzCode%代码>显示您输入的代码值
像这样:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
set /p xyzCode=Please enter the code.
set x=0001
set xyz=0002
set xyza=0003
echo !%xyzCode%!
这样,您就不需要为每个可能的代码都使用IF
语句。如果输入xyz
,此脚本将显示名为xyz
的变量的值。如果我理解正确,我认为您可以使用延迟扩展来执行所需操作
在脚本顶部添加SETLOCAL ENABLEDELAYEDEXPANSION
。然后,添加echo!%xyzCode%代码>显示您输入的代码值
像这样:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
set /p xyzCode=Please enter the code.
set x=0001
set xyz=0002
set xyza=0003
echo !%xyzCode%!
这样,您就不需要为每个可能的代码都使用IF
语句。如果输入xyz
,此脚本将显示名为xyz
的变量的值。此问题可能与此问题重复。此问题可能与此解决方案中使用的称为数组的概念重复,并在@Aacini处进行了详细说明。我在回答中未看到任何数组。没有基本名称或索引值,但似乎是具有关联值的随机代码。所以xyzCode有点像一个指针,指向一个有值的变量。@dbenham:From:“在计算机科学中,数组数据结构,或者简单地说是数组,是由一组元素(值或变量)组成的数据结构,每个元素至少由一个数组索引或键标识。”“术语数组。。。由一组值或变量组成,这些值或变量可由运行时计算的一个或多个索引选择。@Aacini-您引用的定义符合我的理解,也与我的评论一致。如果变量的名称类似于cd.x
,cd.xyz
,cd.xyza
,或cd[x]
,cd[xyz]
,cd[xyza]
,那么我同意它们是作为关联数组运行的。但这不是代码中的内容。@Aacini-我只需要您提供的定义。我们不同意的关键概念是“集合”一词"。添加名为abc
、xxx
、foo
的其他变量。哪些变量被视为同一数组集合的一部分?在我对定义的解释中,数组需要一些基本名称或符号来标识集合,此外,还需要指定集合中单个元素的索引ion。如果你看不到我的观点,那么我想我们将不得不同意不同意,这不是第一次。你在这个解决方案中使用的概念叫做数组,在@Aacini中有充分的解释-我在这个答案中没有看到任何数组。没有基名称或索引值,但似乎有关联值的随机代码。所以xyzCode是有点像指向带值变量的指针。@dbenham:From:“在计算机科学中,数组数据结构,或简称数组,是由元素(值或变量)集合组成的数据结构,每个元素至少由一个数组索引或键标识。”以及“术语数组…由一组值或变量组成,这些值或变量可由运行时计算的一个或多个索引选择”。@Aacini-您引用的定义符合我的理解,也与我的评论一致。如果变量的名称类似于cd.x
,cd.xyz
,cd.xyza
,或cd[x]
,cd[xyz]
,cd[xyza]
,那么我同意它们是作为关联数组运行的。但这不是代码中的内容。@Aacini-我只需要您提供的定义。我们不同意的关键概念是“集合”一词"。添加名为abc
、xxx
、foo
的其他变量。哪些变量被视为同一数组集合的一部分?在我对定义的解释中,数组需要一些基本名称或符号来标识集合,此外,还需要指定集合中单个元素的索引ion.如果你看不到我的观点,那么我想我们将不得不同意不同意,这不是第一次。嗨,韦斯,我真的很喜欢这个想法,我已经把你的答案复制到了一个.bat文件中,现在正在玩它。我必须确切地了解它意味着什么。哈哈。我想这最终会解决我的问题。我想彻底理解第二,学习为政治家准备的知识