找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20534|回复: 12

20元求批处理程序检测一个文件夹里是否出现一个文件

  [复制链接]
发表于 2019-6-5 18:55:55 | 显示全部楼层 |阅读模式
本帖最后由 925697663 于 2019-6-5 19:24 编辑

先说下要求哈
1、根据文件名字获取一个文件A.txt(如果能根据文件首字节获取文件特征也可以)
2、如果文件修改时间超过某个日期B电脑就自动关机,如果不超过就等待1分钟后再检测一次.
3、运行的时候隐藏窗口
4、开机能够自启动最好
谢谢各位大佬了:)
支持微信转账
发表于 2019-6-5 19:07:01 | 显示全部楼层
如果不出现这个文件呢?隔几秒钟再次检测吗
发表于 2019-6-5 19:09:46 | 显示全部楼层
回复 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
复制代码
把具体文件名时间告诉下,好给你填上。
 楼主| 发表于 2019-6-5 19:11:10 | 显示全部楼层
回复 2# Batcher


    是的隔几秒再检测
最好运行的时候把窗口隐藏掉
发表于 2019-6-5 19:17:49 | 显示全部楼层
  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
复制代码
发表于 2019-6-5 19:22:33 | 显示全部楼层
回复 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)
复制代码
发表于 2019-6-5 19:24:02 | 显示全部楼层
  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
复制代码
发表于 2019-6-5 19:24:27 | 显示全部楼层
对了,如果发现就是这个值,是否还需要做什么?还是直接关闭程序就行
发表于 2019-6-5 19:28:11 | 显示全部楼层
问几个问题:
①是全盘搜索吗?
②A.txt有几个?
 楼主| 发表于 2019-6-5 19:28:30 | 显示全部楼层
回复 7# Batcher


    大佬我刚才没说清楚,我稍微修改了下要求,谢谢了
 楼主| 发表于 2019-6-5 19:32:53 | 显示全部楼层
回复 9# hongrk


    是的,A只有一个
发表于 2019-6-5 19:35:09 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2019-6-5 19:35:58 | 显示全部楼层
还是有一些不明白意思的地方,希望可以一一回答一下:

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

如果发现修改日期没问题,还要不要再继续检查?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:23 , Processed in 0.023305 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表