我正在尝试使用循环中的键从下面的地图中获取值。但我没有得到理想的结果。当我在for循环之外使用相同的代码时,一切都通过替换正常工作!与%。为什么它不能用于循环?
setlocal enabledelayedexpansion
set map=Abc_Log-Abc;XYZ_Log-XYZ
FOR /D /R %errfolderpath% %%K in (*Log*) DO (
SET folderName=%%~nK
CALL SET folderName=%%map:*!folderName!-=%%
echo !folderName!
SET folderName=%folderName:;=&rem.%
echo !folderName!
)
理想情况下,第二个回波应该在显示;=
请帮忙。
答案 0 :(得分:1)
问题在于,使用; =& rem的分割技巧不能以这种方式工作。
set folderName=%folderName:;&rem.%
call set set folderName=%%folderName:;&rem.%%
第一个失败,因为它在for循环开始之前扩展 第二行失败,因为在呼叫扩展中,根本不允许使用&符号(管道等)。
但是这个应该做的工作
@echo off
setlocal enabledelayedexpansion
set map=Abc_Log-abc;XYZ_Log-xyz
FOR %%K in ("Abc_Log" "XYZ_Log") DO (
echo(
echo -----
SET folderName=%%~nK
echo entry =!folderName!
SET folderName=!map:*%%~nK-=!
echo fn =!folderName!
for /F "delims=;" %%a in ("!folderName!") do SET folderName=%%a
echo result=!folderName!
)