【问题标题】:Creating a list of files within a BAT file [duplicate]在 BAT 文件中创建文件列表 [重复]
【发布时间】:2012-08-17 20:49:34
【问题描述】:

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

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

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

cd parentDirectory
设置 pdfList =
-用于填充列表的代码在此处-
现在 pdfList 包含“1.pdf 2.pdf 3.pdf”

任何帮助将不胜感激。

【问题讨论】:

    标签: list variables batch-file set


    【解决方案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 文件名,请将 for 语句中的 dir 命令更改为:

    dir /s /b *.pdf
    

    但是使用它会产生副作用,即绝对路径列表将被添加到 pdfList 变量中,而不是您在问题中表达的相对路径。

    第一个if 语句确保我们仅在存在PDF 文件时才执行dir 命令。如果它们不存在,我们不想调用 DIR 命令;否则dir 将打印“找不到文件”错误。

    :append 子例程是必要的,因为如果我们尝试在 for 语句本身中附加到 pdfList 变量,我们会发现 pdfList 在一次迭代中的更新值不会持续到下一次迭代。

    :append 子例程中的if 语句是为了确保我们在pdfList 的值中没有前导空格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-03
      • 1970-01-01
      • 2018-05-26
      • 2010-10-09
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多