Пара ключ-значение в командном файле - PullRequest
2 голосов
/ 15 февраля 2011

Я пытаюсь получить значение из карты ниже, используя ключ в моем цикле. Но я не получаю желаемого результата. Когда я использую тот же код за пределами цикла for, все работает нормально, заменив! с %. Почему не работает цикл 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!

)

В идеале второе эхо должно печатать Abc и XYZ, где, как показано, ;=

Пожалуйста, помогите.

1 Ответ

1 голос
/ 15 февраля 2011

Проблема в том, что разделенный трюк с; = & 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!
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...