批处理之家's Archiver

leoi 发表于 2020-2-24 10:46

求助批处理监控目录文件写入?

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

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

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



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

zaqmlp 发表于 2020-2-24 13:49

[code]@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
if %m% gtr %n% (goto jump)
:back
set n=%m%
>nul ping /n 3 0
goto loop
:jump
echo;执行后面的命令
goto back
:end
echo;%info%
pause
exit[/code]

leoi 发表于 2020-2-25 01:25

[i=s] 本帖最后由 leoi 于 2020-2-26 08:47 编辑 [/i]

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

@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
[color=Red]>nul ping /n 3 0[/color]
if %m% gtr %n% (goto jump)
:back
[color=Red]set m=%n%[/color]
>nul ping /n 3 0
goto loop
:jump
echo;执行后面的命令
goto back
:end
echo;%info%
pause
exit

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.