首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows批处理-如何搜索多个变量,然后使用其名称创建新变量

Windows批处理-如何搜索多个变量,然后使用其名称创建新变量
EN

Stack Overflow用户
提问于 2013-11-22 12:48:31
回答 1查看 60关注 0票数 0

我有一个批处理文件,它拉入所有命令行参数并将它们存储为变量。然后,我在每个变量中搜索一个名称,然后为该名称创建一个具有新内容(rem)的新变量。我在这里完成了第一个搜索,但我不知道如何在不重复相同命令的情况下搜索所有其他搜索。我试过这样做,但没有起作用。无论如何,如果有比这更简单的方法,请告诉我。

代码语言:javascript
复制
@echo off
setlocal enableDelayedExpansion
set var1=noisereduction-01
set var2=sharpener-03
set var3=resize-02
set var4=output-01
set var5=grain-02
set var6=crf-21
set var7=preset-veryfast
set var8=tune-film
set var9=ref-2
set var10=outputdir-g:\output
set var11=mode-3

for /l %%N in (1 1 11) do call :test var%%N
exit /b

:test  variableName
echo !%1!|>nul findstr /rx .*noisereduction.* && set !%1!=rem
echo %1 = !%1!
exit /b

糟糕,上面有一个错误。我想创建一个新的var,名称为“noisereduction 01”,值为" rem ",而不仅仅是给var1一个值rem。我以为集合!%1!=rem可以做到这一点,但事实并非如此。

EN

回答 1

Stack Overflow用户

发布于 2013-11-22 13:19:28

让我们来看看这个问题。什么时候

代码语言:javascript
复制
set var1=noisereduction-01

..。和

代码语言:javascript
复制
for /l %%N in (1 1 11) do call :test var%%N

..。然后,第一个测试调用是使用"var1“参数。这意味着into测试:

代码语言:javascript
复制
set !%1!=rem  IS  set !var1!=rem  IS  set noisereduction-01=rem

..。正确地做了你想要的事情。

但是:

代码语言:javascript
复制
echo %1 = !%1!  IS  echo var1 = !var1!  IS  echo var1 = noisereduction-01

如果要显示noisereduction 01变量的值,则必须执行额外的展开步骤:

代码语言:javascript
复制
for %%v in (!%1!) do echo param: %1, variable: !%1!, value: !%%v!
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20137221

复制
相关文章

相似问题

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