Как получить подстроку локальной переменной в цикле? - PullRequest
4 голосов
/ 22 апреля 2011

Я хочу написать скрипт для получения всех имен файлов в каталоге, а также исключить имена файлов, заканчивающиеся на все .

Я придумалниже скрипт, но он не работает, кто-нибудь может мне помочь?

for /R "%SOME_DIRECTORY%" %%f in (*.testcase) do (
    set CURRENT_TESTCASE=%%~nf
    if not %CURRENT_TESTCASE:~-3%==all  (
        echo %%~nf >> "%FILELIST%"
    )
)

1 Ответ

7 голосов
/ 22 апреля 2011

Переменная CURRENT_TESTCASE вычисляется перед выполнением тела цикла. (Вот как командный процессор работает с составными командами, содержащими паразиты.)

Чтобы предотвратить преждевременную оценку переменной, необходимо включить отложенное расширение переменных локально и слегка изменить синтаксис. Вот как:

for /R "%SOME_DIRECTORY%" %%f in (*.testcase) do (
    set CURRENT_TESTCASE=%%~nf
    <b>setlocal EnableDelayedExpansion</b>
    if not <b>!</b>CURRENT_TESTCASE:~-3<b>!</b>==all  (
        echo %%~nf >> "%FILELIST%"
    )
    <b>endlocal</b>
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...