Board logo

标题: [文本处理] 求助批处理监控目录文件写入? [打印本页]

作者: leoi    时间: 2020-2-24 10:46     标题: 求助批处理监控目录文件写入?

请教,如何做到监控一个指定目录的文件写入如 c:/pdf

如果检测到pdf目录下有pdf文件写入就执行后面的命令,否则一直保持待命状态待监控目录状态。

另外请教些pdf文件能用SHA1判断是否是同一个文件吗?



顺便讨论下我写的这段FTP的判断与上传的可行性。因为ftp没有返回值,所以通过http返回值先确认下链接是否正常。我发现失败的返回值都是高于226 所以我下了个这样的判断。不知是否合理。
  1. @echo off
  2. rem 新建当日目录并上传文件
  3. @setlocal ENABLEDELAYEDEXPANSION
  4. @set today=%date:~0,4%-%date:~5,2%-%date:~8,2%
  5. @md D:\backup\%today%
  6. for /f %%i in ('curl -so /dev/null -w %%{http_code} ftp://用户名:密码@IP地址:端口') do (
  7. set ret=%%i
  8. )
  9. if %ret% LEQ 226 (
  10. Echo bye
  11. Echo open IP地址>ftp.up
  12. Echo 用户名>>ftp.up
  13. Echo 密码>>ftp.up
  14. rem Echo Cd .\User >>ftp.up
  15. Echo binary>>ftp.up
  16. Echo prompt >>ftp.up
  17. Echo lcd "D:\Pdf">>ftp.up
  18. Echo mput "D:\Pdf\*.pdf">>ftp.up
  19. Echo bye>>ftp.up
  20. FTP -s:ftp.up
  21. rem del/s/q D:\Pdf\*
  22. del ftp.up /q
  23. Xcopy /y "D:\Pdf\*.pdf" D:\backup\%today%
  24. del /f/s/q "D:\Pdf\*.pdf"
  25. ) else (
  26. exit
  27. )
  28. exit
复制代码

作者: zaqmlp    时间: 2020-2-24 13:49

  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢赞助
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. set "folder=C:\pdf"
  6. if not exist "%folder%" (echo;"%folder%" no found&goto end)
  7. set n=0
  8. for /f "delims=" %%a in ('dir /a-d/b "%folder%\*.pdf" 2^>nul') do set /a n+=1
  9. :loop
  10. set m=0
  11. for /f "delims=" %%a in ('dir /a-d/b "%folder%\*.pdf" 2^>nul') do set /a m+=1
  12. if %m% gtr %n% (goto jump)
  13. :back
  14. set n=%m%
  15. >nul ping /n 3 0
  16. goto loop
  17. :jump
  18. echo;执行后面的命令
  19. goto back
  20. :end
  21. echo;%info%
  22. pause
  23. exit
复制代码

作者: leoi    时间: 2020-2-25 01:25

本帖最后由 leoi 于 2020-2-26 08:47 编辑

改成这样把问题解决了。谢谢你

@echo off
set info=互助互利,支付宝扫码头像,感谢赞助
rem 有问题,可加QQ956535081及时沟通
title %info%
set "folder=C:\pdf"
if not exist "%folder%" (echo;"%folder%" no found&goto end)
set n=0
for /f "delims=" %%a in ('dir /a-d/b "%folder%\*.pdf" 2^>nul') do set /a n+=1
:loop
set m=0
for /f "delims=" %%a in ('dir /a-d/b "%folder%\*.pdf" 2^>nul') do set /a m+=1
>nul ping /n 3 0
if %m% gtr %n% (goto jump)
:back
set m=%n%
>nul ping /n 3 0
goto loop
:jump
echo;执行后面的命令
goto back
:end
echo;%info%
pause
exit




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2