2014-11-24 3 views
0

У меня есть эта файловая структура, где каждый подкаталог содержит определенные типы файлов, скажем, pdf.Назначение строковой переменной в цикле dos FOR

ParentDIR
-> SUBDIR1
-> SUBDIR2

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

@echo off 
for /R %%v in (*.pdf) do ( 
set pathname=%%~pv 
echo %pathname% 
) 

Я хотел бы ожидать выход переменной пути здесь, чтобы прочитать

\ PARENTDIR \ SUBDIR1
\ PARENTDIR \ SUBDIR2

но читает

\ PARENTDIR \ SUBDIR2
\ PARENTDIR \ SUBDIR2

Если я эхо значение %% ~ Рв без присвоения его переменной, это правильно.

Как я могу правильно присвоить значение этой переменной на каждой итерации через цикл?

ответ

1
@echo off >Nul 
setlocal EnableDelayedExpansion 
for /R %%v in (*.pdf) do ( 
set pathname=%%~pv >Nul 
echo !pathname! 
) 
endlocal 

Здесь ум EnableDelayedExpansion ключевого слова setlocal команды = Расширить переменные во время выполнения, а не во время синтаксического анализа, если используется !pathname! синтаксиса вместо %pathname% один.

Смежные вопросы