在批处理文件中,我正在尝试创建目录及其子文件夹中所有PDF文件的列表,并使用 set 将此信息存储在变量中。
例如,如果 parentDirectory 包含 1.pdf,2.pdf,和 3.pdf 本身及其子文件夹:
cd parentDirectory
set pdfList =
用于填充列表的 -code在这里 -
现在pdfList包含“1.pdf 2.pdf 3.pdf”
任何帮助都将不胜感激。
答案 0 :(得分:1)
@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
语句确保仅在存在PDF文件时才执行dir
命令。如果DIR命令不存在,我们不想调用它;否则dir
会打印“找不到文件”错误。
:append
子例程是必要的,因为如果我们尝试附加到pdfList
语句本身的for
变量,我们会发现pdfList
的更新值在一次迭代中,直到下一次迭代才能存活。
if
子例程中的:append
语句是为了确保我们在pdfList
的值中没有前导空格。