我有一个批处理文件,它拉入所有命令行参数并将它们存储为变量。然后,我在每个变量中搜索一个名称,然后为该名称创建一个具有新内容(rem)的新变量。我在这里完成了第一个搜索,但我不知道如何在不重复相同命令的情况下搜索所有其他搜索。我试过这样做,但没有起作用。无论如何,如果有比这更简单的方法,请告诉我。
@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可以做到这一点,但事实并非如此。
发布于 2013-11-22 13:19:28
让我们来看看这个问题。什么时候
set var1=noisereduction-01..。和
for /l %%N in (1 1 11) do call :test var%%N..。然后,第一个测试调用是使用"var1“参数。这意味着into测试:
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!https://stackoverflow.com/questions/20137221
复制相似问题