批量检查多个文件范围

Batch check for multiple file range

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

有一些发票需要检查 - 编号从 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%"
@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%"

主要是错别字。 Changed/corrected 来自您的代码:

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

  • 您的 for 命令中的可替换参数是 %%i。在批处理文件中,对它的所有引用都必须使用相同的双百分比。您的一些参考资料是 %i

  • 需要in子句后的space

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