我有一个变量“var1”,内容为“sharp = soothe”
var1=sharp=soothe
如何仅使用var1内容创建新变量来获取此
sharp=soothe
我想以某种方式使用set命令
set %var1%=
但我不能比这更进一步。我希望我不必在=符号之前和之后搜索字符串。我认为会有更快的方式。
好的,我太近了。我发现了一些我正在使用的其他代码,这几乎适用于无数个变量,但set命令语法又错了。set var1=unfilter=rem
set var2=mdegrain=rem
set n=0
:parseArgs2
set /a n+=1
if defined var%n% (
set %var%n%%
shift /1
goto :parseArgs2
)
答案 0 :(得分:3)
试试这个:
set var1=sharp=soothe
for /f "tokens=*" %%a in ("%var1%") do set %%a
echo %sharp%
或只是:
for %%a in ("%var1%") do set %%a
答案 1 :(得分:3)
只需从您的尝试中删除一个字符: - )
set %var1%
如果你有一个变量的“数组”:var1,var2,... var20,那么你可以使用延迟扩展的FOR / L循环:
setlocal enableDelayedExpansion
rem define your variables here ...
for /l %%N in (1 1 20) do set !var%%N!
或者如果你有一系列随机命名的变量,一个简单的FOR会做:
setlocal enableDelayedExpansion
rem define your variables here ...
for %%V in (varA varB varC varD) do set !%%V!
更新以响应加载项问题
我不明白您使用SHIFT的原因,除非您还没有显示其他代码。我删除了SHIFT。
set var1=unfilter=rem
set var2=mdegrain=rem
set n=0
:parseArgs2
set /a n+=1
if defined var%n% (
call set %%var%n%%%
goto :parseArgs2
)
或
setlocal enableDelayedExpansion
set var1=unfilter=rem
set var2=mdegrain=rem
set n=0
:parseArgs2
set /a n+=1
if defined var%n% (
set !var%n%!
goto :parseArgs2
)
答案 2 :(得分:2)
也许这就是你想要的?
@echo off
setlocal EnableDelayedExpansion
set var1=unfilter=rem
set var2=mdegrain=rem
set var10=resize=rem
for /F "tokens=1* delims==" %%a in ('set var') do set %%b
在此方法中,定义变量的 number 及其 order 无关紧要;始终处理所有已定义的变量。
编辑:以下是在ECHO
之前放置set %%b
命令时的输出:
set unfilter=rem
set resize=rem
set mdegrain=rem