首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在批处理中使用一组IF语句

如何避免在批处理中使用一组IF语句
EN

Stack Overflow用户
提问于 2016-02-23 19:45:35
回答 3查看 130关注 0票数 0

因此,我是创建我的第一批文件的过程,我相信有一个更好的方法。似乎我可以完成我想要的,但从我读过的所有惯例来看,它似乎是草率的。

代码语言:javascript
复制
@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,但需要一种在批处理脚本中这样做的方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-23 20:19:25

您可以尝试为所有代码和标识符保留一个单独的文本或csv文件,如下所示:

Code&ItemList.txt

代码语言:javascript
复制
  Code, Material Id
  0001, Abcd
  0123, Qwerty
  4567, Zxcvb

然后,可以编写类似于以下内容的批处理脚本:

代码语言:javascript
复制
@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
)

输入for /?来解释它的工作方式和原因。

票数 1
EN

Stack Overflow用户

发布于 2016-02-23 20:42:53

如果我理解正确,我认为你可以用延迟扩展来做你想做的事。

在脚本顶部添加SETLOCAL ENABLEDELAYEDEXPANSION。然后,在底部添加echo !%xyzCode%!以显示您输入的代码的值。

如下所示:

代码语言:javascript
复制
@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的变量的值。

票数 1
EN

Stack Overflow用户

发布于 2016-02-23 19:53:34

听起来像是开关箱的工作

switch statement equivalent in windows batch file

它仍将占用大量的空间,但我相信它们比IF语句要快得多

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35586745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档