[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎么每过3分种检测某TXT的大小,大小变化就运行B.BAT?

请教怎么每过3分种检测x.TXT文件大小每次检测TXT ,大于上一次,就运行B.BAT
或者每3分种检测 X.txt的行数,只要行数多了就运行B.bat 每天检测只要一多就运行B.bat

麻烦给个例子

举例:
  1. @echo off
  2. for %%a in (a.txt) do set "sz=%%~za"
  3. :Lp
  4. ping>nul -n 180 127.0.1
  5. for %%a in (a.txt) do (
  6.         if "%%~za" NEQ "%sz%" Do Something
  7.         set "sz=%%~za"
  8. )
  9. goto :Lp
复制代码

TOP

回复 2# apang



解释下好吗??? B.bat   写在哪里

TOP

回复 3# 649918043


    b.bat和2楼代码保存的(假设为a.bat)放在同一个目录。

TOP

麻烦解释下  没明白  例如 我要用计划任务来执行,,或者用到第三方来定时3分运行一次,,

怎么写,,没看懂,。,。 b.bat这个,可以让我任意更换运行的bat名称吗???

TOP

本帖最后由 Linuxer 于 2014-8-26 12:45 编辑

回复 5# 649918043


    2楼代码里本身带有自动运行,不用计划任务也可以。不关闭cmd窗口,就会一直隔3分钟检测一次大小。
  1. if "%%~za" NEQ "%sz%" Do Something
复制代码
do something换成你需要的执行内容,名称随意,即:
  1. if "%%~za" NEQ "%sz%" b.bat
复制代码
x.txt
2楼代码.bat
b.bat
三个都放在一个文件夹下。

TOP

保存为 check_x.txt.bat,双击运行即添加计划任务,每隔三分钟调用一次本 bat
x.bat 的大小将被保存在此 bat 的文件名中...
  1. @echo off
  2. cd /d "%~dp0"
  3. for %%a in (x.TXT) do (
  4.    if %%~za neq %~n0 (
  5.       start "" "你要执行的bat"
  6.       ren "%~0" "%%~za.bat"&&(
  7.           schtasks /delete /tn "check_x.txt"
  8.           schtasks /create /sc minute /mo 20 /tn "check_x.txt" /tr "%%~za.bat"
  9.       )
  10.    )
  11. ) 2>nul
复制代码

TOP

二楼的sz是不是写死了?

TOP

回复 2# apang


    sz是不是写死了,a.txt如果有变化的话三分钟后执行B.bat,然后再过三分钟对比的还是之前a.txt的大小???

TOP

本帖最后由 523066680 于 2014-8-28 18:09 编辑

回复 8# 605389735


    set sz=死了

可能原因是没有开启变量扩展  setlocal enabledelayedexpansion
在for里面要用
!sz! 或者call + %%sz%%

TOP

回复 10# 523066680

  应该是没开变量延迟

TOP

回复 9# 605389735


    我怎么觉得 sz 活得好好的呢?

TOP

回复 12# apang


    嗯,我也觉得不是冰冻的

TOP

回复 10# 523066680


    在不同的 for 里分别赋值 sz,不需要开启变量延迟哈~

TOP

本帖最后由 523066680 于 2014-8-28 18:44 编辑

回复 14# apang


    有道理。还有个goto :lp来着,不知道楼主为啥说sz 死了

TOP

返回列表