Variables Windows批处理-如何搜索多个变量,然后使用它们的名称创建新变量
我有一个批处理文件,它将所有命令行参数都拉入并存储为变量。然后,我在每个文件中搜索一个名称,然后为该名称创建一个新变量,但包含新内容(rem)。我在这里完成了第一次搜索,但我不知道如何在不重复相同命令的情况下搜索所有其他搜索。我试着这样做,但没有成功。无论如何,如果有比这更简单的方法,请告诉我Variables Windows批处理-如何搜索多个变量,然后使用它们的名称创建新变量,variables,search,batch-file,Variables,Search,Batch File,我有一个批处理文件,它将所有命令行参数都拉入并存储为变量。然后,我在每个文件中搜索一个名称,然后为该名称创建一个新变量,但包含新内容(rem)。我在这里完成了第一次搜索,但我不知道如何在不重复相同命令的情况下搜索所有其他搜索。我试着这样做,但没有成功。无论如何,如果有比这更简单的方法,请告诉我 @echo off setlocal enableDelayedExpansion set var1=noisereduction-01 set var2=sharpener-03 set var3=re
@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
哎呀,上面有个错误。我想创建一个名为“noisereduction-01”且值为“rem”的新var,而不仅仅是给var1一个rem值。我认为该集合是%1!=雷会这么做,但事实并非如此 让我们看看这个问题。什么时候
set var1=noisereduction-01
。。。及
for /l %%N in (1 1 11) do call :test var%%N
。。。然后,对test的第一个调用是使用“var1”参数。这意味着进入测试:
set !%1!=rem IS set !var1!=rem IS set noisereduction-01=rem
。。。这就是你想要的
然而:
echo %1 = !%1! IS echo var1 = !var1! IS echo var1 = noisereduction-01
如果要显示noisereduction-01变量的值,则必须执行额外的展开步骤:
for %%v in (!%1!) do echo param: %1, variable: !%1!, value: !%%v!
让我们看看这个问题。什么时候
set var1=noisereduction-01
。。。及
for /l %%N in (1 1 11) do call :test var%%N
。。。然后,对test的第一个调用是使用“var1”参数。这意味着进入测试:
set !%1!=rem IS set !var1!=rem IS set noisereduction-01=rem
。。。这就是你想要的
然而:
echo %1 = !%1! IS echo var1 = !var1! IS echo var1 = noisereduction-01
如果要显示noisereduction-01变量的值,则必须执行额外的展开步骤:
for %%v in (!%1!) do echo param: %1, variable: !%1!, value: !%%v!
好的,你说得对。那么我如何对列表中的所有变量执行此操作,一个“for”命令???@tyee-如果您需要批量控制某些内容,通常需要一个
for
循环。@tyee:您已经在(11)中有了for/l%%N的do call:test var%%N
循环来查看列表中的所有变量,只需在:test
子例程中添加额外的扩展。我遗漏了什么?好的,你是对的。那么我如何对列表中的所有变量执行此操作,一个“for”命令???@tyee-如果您需要批量控制某些内容,通常需要一个for
循环。@tyee:您已经在(11)中有了for/l%%N的do call:test var%%N
循环来查看列表中的所有变量,只需在:test
子例程中添加额外的扩展。我错过了什么?