Batch file 使用可变内容作为另一个可变名称的Windows批处理

Batch file 使用可变内容作为另一个可变名称的Windows批处理,batch-file,Batch File,我需要使用一个字符串格式的变量内容作为另一个变量的名称,并调用该变量内容 比如: set upd1= c:\test1 set testval=upd1 set upd=%testval% echo %upd% 结果是upd1,我希望得到的结果显示c:\test1您应该更改 set testval=upd1 当设置testval=%upd1%时,您应该更改 set testval=upd1 当设置testval=%upd1%时,请尝试以下操作: @ECHO OFF &SETLO

我需要使用一个字符串格式的变量内容作为另一个变量的名称,并调用该变量内容

比如:

set upd1= c:\test1
set testval=upd1

set upd=%testval%

echo %upd%
结果是upd1,我希望得到的结果显示c:\test1

您应该更改

set testval=upd1
设置testval=%upd1%
时,您应该更改

set testval=upd1
当设置testval=%upd1%时,请尝试以下操作:

@ECHO OFF &SETLOCAL
set "upd1= c:\test1"
set "testval=upd1"
set "upd=testval"
ECHO %upd%
CALL ECHO %%%upd%%%
CALL CALL ECHO %%%%%%%upd%%%%%%%

输出:

testval
upd1
 c:\test1
试试这个:

@ECHO OFF &SETLOCAL
set "upd1= c:\test1"
set "testval=upd1"
set "upd=testval"
ECHO %upd%
CALL ECHO %%%upd%%%
CALL CALL ECHO %%%%%%%upd%%%%%%%

输出:

testval
upd1
 c:\test1
呼应“酒吧”

呼应“酒吧”

根据你的情况,这里有两种方法。注意:我已将名称
upd
更改为
upd2
,以便使用最终的
set
命令进行比较。而且
upd1
的原始值包含一个空格;因此,我添加了一个
+
来直观地限定值
echo
ed


根据你的情况,这里有两种方法。注意:我已将名称
upd
更改为
upd2
,以便使用最终的
set
命令进行比较。而且
upd1
的原始值包含一个空格;因此,我添加了一个
+
来直观地界定值
echo
ed.

对我来说像“set testval=%upd1%”,感觉太复杂了。对我来说像“set testval=%upd1%”,感觉太复杂了。使用命令
set testval=%upd1%
变量
testval
获取内容(=扩展变量)而不是变量名。使用命令
set testval=%upd1%
变量
testval
获取内容(=展开的变量)而不是变量名。这可以解决问题,但如果需要重用变量怎么办?假设我想创建一个批处理,该批处理将根据文件名本身定义一个upd变量,并执行特定操作<代码>设置upd1=c:\upd
设置upd2=d:\upd
设置upd3=e:\upd
设置fn=%~n0
REM这是我无法工作的部分。。我想将文件名作为变量调用传递给%%x in(exe ini)do xcopy/D/Y c:\test\*。%%x%upd%如果上述代码由upd1执行,则xcopy应将内容复制到c:\upd,如果它是由upd3.bat执行的,那么内容应该复制到e:\updt,这就可以了,但是如果我需要重用这个变量呢?假设我想创建一个批处理,该批处理将根据文件名本身定义一个upd变量,并执行特定操作<代码>设置upd1=c:\upd
设置upd2=d:\upd
设置upd3=e:\upd
设置fn=%~n0
REM这是我无法工作的部分。。我想将文件名作为变量调用传递给%%x in(exe ini)do xcopy/D/Y c:\test\*。%%x%upd%如果上述代码由upd1执行,则xcopy应将内容复制到c:\upd,如果由upd3执行,则内容应复制到e:\upd