批量检查多个文件范围

时间:2015-01-08 10:55:21

标签: batch-file

我需要检查文件夹中是否存在按时间顺序排列的多个文件。我有一些问题,希望你能帮助我。

有一些发票需要检查 - 编号从13073713到13106972.发票包含前缀“F”,信用证不是“G”,例如“F13106972.pdf”和“G13106972.pdf”后缀.pdf。我想要做的是循环文件夹并按时间顺序将所有缺少的文件输出到log.txt中。我做错了什么?

@echo off & setlocal
set "Ordner=%userprofile%\Desktop\test"
set "Log=%userprofile%\Desktop\Test\log.txt"
set /a from=13073713
set /a to=13106972
del "%Log%" 2 > nul
for /L %%i in(%from%,1,%to%)do (
if not exist "%Ordner%\F%i.pdf" echo F%%i
if not exist "%Ordner%\G%i.pdf" echo G%%i) >> "%Log%"

1 个答案:

答案 0 :(得分:0)

@echo off 
    setlocal enableextensions disabledelayedexpansion

    set "Ordner=%userprofile%\Desktop\test"
    set "Log=%userprofile%\Desktop\Test\log.txt"

    set "from=13073713"
    set "to=13106972"

    (for /L %%i in (%from% 1 %to%) do (
        if not exist "%Ordner%\F%%i.pdf" echo F%%i
        if not exist "%Ordner%\G%%i.pdf" echo G%%i
    )) > "%Log%"

主要是拼写错误。从您的代码更改/更正:

  • set /a仅需要向解析器指示指示存储在变量中的值包含需要评估的某种算术运算。在批处理文件中,最后,所有值都是字符串。您的代码中没有错误(可行)但不需要。

  • for命令中的可替换参数为%%i。所有对它的引用必须在批处理文件中使用相同的双倍百分比。您的部分参考文献是%i

  • 需要in子句后的空格

  • 删除了日志文件删除。所有for命令都包含在一个块(括号)中,并重定向到日志文件。如果存在,则会被覆盖。