batch-file - 如何测试是否将新文件添加到目录并执行某些操作
问题描述
我需要检查是否在目录中添加了新的 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 文件,但它也必须是按字母顺序排列的最后一个文件。
我如何处理创建的最后一个文件,即使它没有按字母顺序排序最后一个?
解决方案
您可以使用最后修改日期使用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:c
Compo 在评论中指定的文件的创建日期/时间。
@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
推荐阅读
- matlab - 如何从 Matlab 中的回调函数中获取数据以进行进一步处理?
- c++ - 调试断言失败缓冲区!= nullptr
- php - 使用 Cron 作业时未定义的 REMOTE_ADDR - Laravel 的背包
- image-processing - 深度学习中如何处理整张幻灯片图像
- c# - 随机移动脚本导致 Unity 冻结
- google-sheets - 如何检查一行是否有数据和条件格式?
- python - 将数组顶部 0.005% 的元素设置为 1 并将其余元素设置为零的简单方法
- angular - Angular LiveReload 不适用于 Linux 的 Windows 子系统
- flutter - Codemagic 与 Azure Dev Ops
- swift - 点"." 是什么意思?运算符用于快速?是调用函数吗?