首页 > 解决方案 > 如何测试是否将新文件添加到目录并执行某些操作

问题描述

我需要检查是否在目录中添加了新的 PDF 文件,然后我做一些事情。

为此,我从这个批处理脚本开始:

@echo off

:loop
  IF exist "*.pdf" (for %%i in (*.pdf) do set pdfname_new=%%i) ELSE ( goto loop)
  ECHO %pdfname_new%
goto loop

当我创建第一个 PDF 文件 test1.pdf 时,它可以正常工作并打印 test1,然后当我添加 test2.pdf 时,它也可以正常工作并打印 test2。

当我添加 test0.pdf 时出现问题,它会打印 test2

我注意到它不会处理创建的最后一个 pdf 文件,但它也必须是按字母顺序排列的最后一个文件。

我如何处理创建的最后一个文件,即使它没有按字母顺序排序最后一个?

标签: batch-file

解决方案


您可以使用最后修改日期使用dir /o:-d(最后修改的文件将在列表中最后)

@echo off
:loop
for /f "delims=" %%i in ('dir /b /o:d "*.pdf"') do set "file=%%~i">nul 2>&1
echo "%file%"
timeout 5 /Nobreak >nul
goto :loop

或者,如果您只想使用/t:cCompo 在评论中指定的文件的创建日期/时间。

@echo off
:loop
for /f "delims=" %%i in ('dir /b /o:d /t:c "*.pdf"') do set "file=%%~i"
echo "%file%"
timeout 5 /Nobreak >nul
goto :loop

推荐阅读