在BAT文件中创建文件列表

时间:2012-08-17 20:49:34

标签: list variables batch-file set

  

可能重复:
  Batch file - Write list of files to variable

在批处理文件中,我正在尝试创建目录及其子文件夹中所有PDF文件的列表,并使用 set 将此信息存储在变量中。

例如,如果 parentDirectory 包含 1.pdf,2.pdf, 3.pdf 本身及其子文件夹:

cd parentDirectory
set pdfList =
用于填充列表的 -code在这里 -
现在pdfList包含“1.pdf 2.pdf 3.pdf”

任何帮助都将不胜感激。

1 个答案:

答案 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的值中没有前导空格。