Board logo

标题: 20元求批处理程序检测一个文件夹里是否出现一个文件 [打印本页]

作者: 925697663    时间: 2019-6-5 18:55     标题: 20元求批处理程序检测一个文件夹里是否出现一个文件

本帖最后由 925697663 于 2019-6-5 19:24 编辑

先说下要求哈
1、根据文件名字获取一个文件A.txt(如果能根据文件首字节获取文件特征也可以)
2、如果文件修改时间超过某个日期B电脑就自动关机,如果不超过就等待1分钟后再检测一次.
3、运行的时候隐藏窗口
4、开机能够自启动最好
谢谢各位大佬了:)
支持微信转账
作者: Batcher    时间: 2019-6-5 19:07

如果不出现这个文件呢?隔几秒钟再次检测吗
作者: happy886rr    时间: 2019-6-5 19:09

回复 1# 925697663
  1. @echo off
  2. :main
  3. if exist .\"要检测的文件" (
  4. for %%a in ("另外一个文件") do (
  5. if not "%%~ta"== "你设定的时间" (
  6. shutdown -r -t 0
  7. )
  8. )
  9. )
  10. goto main
  11. pause
复制代码
把具体文件名时间告诉下,好给你填上。
作者: 925697663    时间: 2019-6-5 19:11

回复 2# Batcher


    是的隔几秒再检测
最好运行的时候把窗口隐藏掉
作者: hongrk    时间: 2019-6-5 19:17

  1. @echo off
  2. for /R "文件夹路径" %%i in (*.*) do (
  3. if "%%~nxi"=="你要的文件名与其扩展名" call :next
  4. )
  5. :next
  6. for %%i in ("另外一个文件的路径")do if not "%%~ti"=="另一个值" (shutdown -s)
  7. exit
  8. rem 有空格的话最好用引号包起来,上面格式已经帮你包好了
  9. rem 文件夹路径格式:E:\新建文件夹
  10. rem 文件夹路径格式:E:\新建文件夹\123.txt
  11. rem 时间格式:2019/05/31 13:22
复制代码

作者: hongrk    时间: 2019-6-5 19:22

回复 5# hongrk

这个能满足你目前所说的要求
  1. @echo off
  2. if "%1" == "h" goto begin
  3. mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
  4. :begin
  5. for /R "文件夹路径" %%i in (*.*) do (
  6. if "%%~nxi"=="你要的文件名与其扩展名" call :next
  7. )
  8. ping -n 5 127.0.0.1
  9. goto begin
  10. :next
  11. for %%i in ("另外一个文件的路径")do if not "%%~ti"=="另一个值" (shutdown -s)
复制代码

作者: Batcher    时间: 2019-6-5 19:24

  1. @echo off
  2. REM 设置待检测的文件夹和文件
  3. set "CheckFileName=D:\Test\BatHome.txt"
  4. REM 设置待比较的文件
  5. set "CompareFileName=D:\Test\Batcher.txt"
  6. :Begin
  7. if not exist "%CheckFileName%" (
  8.     echo 未发现文件 "%CheckFileName%"
  9.     echo 大约10秒之后再次自动检测
  10.     ping -n 10 127.0.0.1 >nul
  11.     goto :Begin
  12. )
  13. for %%i in ("%CheckFileName%") do (
  14.     set "CheckFileTime=%%~ti"
  15. )
  16. for %%i in ("%CompareFileName%") do (
  17.     set "CompareFileTime=%%~ti"
  18. )
  19. echo %CheckFileTime% --- %CheckFileName%
  20. echo %CompareFileTime% --- %CompareFileName%
  21. if "%CheckFileTime%" neq "%CompareFileTime%" (
  22.     echo 两个文件的修改日期时间不相等
  23.     echo 10秒之后自动关机
  24.     shutdown /f /s /t 10
  25. ) else (
  26.     echo 两个文件的修改日期时间相等
  27. )
  28. pause
复制代码

作者: hongrk    时间: 2019-6-5 19:24

对了,如果发现就是这个值,是否还需要做什么?还是直接关闭程序就行
作者: hongrk    时间: 2019-6-5 19:28

问几个问题:
①是全盘搜索吗?
②A.txt有几个?
作者: 925697663    时间: 2019-6-5 19:28

回复 7# Batcher


    大佬我刚才没说清楚,我稍微修改了下要求,谢谢了
作者: 925697663    时间: 2019-6-5 19:32

回复 9# hongrk


    是的,A只有一个
作者: hongrk    时间: 2019-6-5 19:35

本帖最后由 hongrk 于 2019-6-5 20:27 编辑
  1. @echo off
  2. reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v wkdxz /t reg_sz /d %0 /f
  3. set B=日期
  4. if "%1" == "h" goto begin
  5. mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
  6. :begin
  7. for %%a in (C D E F G H I)do (
  8. for /R "%%a:" %%i in (*.*) do (
  9. if "%%~nxi"=="A.txt" if not "%%~ti"=="%B%" shutdown -s
  10. )
  11. )
  12. ping -n 60 127.0.0.1
  13. goto begin
复制代码

作者: hongrk    时间: 2019-6-5 19:35

还是有一些不明白意思的地方,希望可以一一回答一下:

是否是全盘搜索,或者盘是确定的?

如果发现修改日期没问题,还要不要再继续检查?




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