我有这个文件结构,其中每个子目录包含特定的文件类型,比方说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的值而不将其赋值给变量,那么它是正确的。
如何在循环的每次迭代中正确分配此变量的值?
答案 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}}一个。