在dos FOR循环中分配字符串变量

时间:2014-11-24 21:50:11

标签: batch-file

我有这个文件结构,其中每个子目录包含特定的文件类型,比方说pdf。

ParentDIR
- > SUBDIR1
- > SUBDIR2

我正在尝试从父级运行批处理文件以递归方式返回路径,以便我可以解析它们并执行一些操作

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

我希望路径变量的输出在这里读取

\ PARENTDIR \ SUBDIR1
\ PARENTDIR \ SUBDIR2

但它的内容是

\ PARENTDIR \ SUBDIR2
\ PARENTDIR \ SUBDIR2

如果我回显%%〜pv的值而不将其赋值给变量,那么它是正确的。

如何在循环的每次迭代中正确分配此变量的值?

1 个答案:

答案 0 :(得分:1)

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

此处EnableDelayedExpansion !pathname!关键字%pathname%关键字在执行时而不是在解析时展开变量,如果使用{{1}}语法而不是{{1}}一个。