可能重复:
批处理文件 - 将文件列表写入变量
在批处理文件中,我试图创建目录及其子文件夹中所有 PDF 文件的列表,并使用set将此信息存储在变量中。
例如,如果parentDirectory本身及其子文件夹包含1.pdf、2.pdf和3.pdf :
cd parentDirectory
set pdfList =
- 用于填充列表的代码在这里 -
现在 pdfList 包含“1.pdf 2.pdf 3.pdf”
任何帮助,将不胜感激。
可能重复:
批处理文件 - 将文件列表写入变量
在批处理文件中,我试图创建目录及其子文件夹中所有 PDF 文件的列表,并使用set将此信息存储在变量中。
例如,如果parentDirectory本身及其子文件夹包含1.pdf、2.pdf和3.pdf :
cd parentDirectory
set pdfList =
- 用于填充列表的代码在这里 -
现在 pdfList 包含“1.pdf 2.pdf 3.pdf”
任何帮助,将不胜感激。
@echo off
setlocal
cd ..
if exist *.pdf(
for /f "tokens=*" %%a in ('dir /b *.pdf') do call :append %%a
)
echo pdfList: %pdfList%
goto :eof
:append
if defined pdfList (
set pdfList=%pdfList% %1
) else (
set pdfList=%1
)
这会将由空格分隔的 PDF 文件名列表添加到pdfList
变量中。如果您还想在所有子目录中包含 PDF 文件名,则将语句中的dir
命令更改为:for
dir /s /b *.pdf
但是使用它会产生副作用,即绝对路径列表将被添加到pdfList
变量中,而不是您在问题中表达的相对路径。
第一条if
语句确保我们dir
仅在存在 PDF 文件时才执行命令。如果它们不存在,我们不想调用 DIR 命令;否则dir
会打印“找不到文件”错误。
该:append
子例程是必要的,因为如果我们尝试pdfList
在语句本身中附加到变量for
,我们会发现pdfList
在一次迭代中更新的值不会持续到下一次迭代。
子例程中的if
语句:append
是为了确保在 的值中没有前导空格pdfList
。