用于检查文件大小是否比之前的检查有所增加的 VB 脚本

2024-03-04

我需要一个 VB 脚本来检查文件大小并捕获它,并在下一次检查中将其与上一次检查进行比较。如果大小增加,则应提示文件大小增加。


你可以尝试一下这个vbscript:

Option Explicit
const bytesToKb = 1024
Dim strFile,Title
Title = "The File Size Checker by Hackoo 2015"
strFile = "C:\test.txt"
Call CheckSize(strFile)
'*****************************************************************
Sub CheckSize(File)
    Dim ws,fso,objFile,ReadSize,WriteSize,MySizeFile,Temp,LastSize
    Set ws = CreateObject("wscript.Shell")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Temp = ws.ExpandEnvironmentStrings("%Temp%")
    MySizeFile = Temp & "\MyFileSize.txt"
    If Not fso.FileExists(MySizeFile) Then
        Set WriteSize = fso.OpenTextFile(MySizeFile,2,True)
        set objFile = fso.GetFile(strFile)
        WriteSize.Write objFile.Size
    End If
    Set ReadSize = fso.OpenTextFile(MySizeFile,1)
    LastSize = ReadSize.readall
    set objFile = fso.GetFile(strFile)
    If CLng(objFile.Size) = CLng(LastSize) Then 
    MsgBox "There is no change on file size : " & CLng(LastSize) & " bytes" & vbcr &_
    "Size in Kb : "& CLng(objFile.Size/bytesToKb) & " Kb",VbInformation,Title
    else
    Set WriteSize = fso.OpenTextFile(MySizeFile,2,True)
        MsgBox "Last File Size is : " & CLng(LastSize) & " bytes" & vbcr &_
        "New File Size is : " & objFile.Size & " bytes" & vbcr &_
        "Size in Kb : "& CLng(objFile.Size/bytesToKb) & " Kb",VbExclamation,Title
    WriteSize.Write objFile.Size 
    end if
End Sub 
'*******************************************************************

我稍微改进了这个脚本,以循环检查每分钟是否更改了大小,如果是,它将弹出一个消息框,通知您大小已更改,如果否,它会休眠 1 分钟,然后再次检查。

Option Explicit
const bytesToKb = 1024
Dim strFile,Title
Title = "The File Size Checker by Hackoo 2015"
strFile = "C:\test.txt"
If AppPrevInstance() Then   
    MsgBox "There is an existing proceeding",VbExclamation,"There is an existing proceeding"    
    WScript.Quit   
Else   
    Do   
        Call CheckSize(strFile)
    Loop   
End If 
'*****************************************************************
Sub CheckSize(File)
    Dim ws,fso,objFile,ReadSize,WriteSize,MySizeFile,Temp,LastSize
    Set ws = CreateObject("wscript.Shell")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Temp = ws.ExpandEnvironmentStrings("%Temp%")
    MySizeFile = Temp & "\MyFileSize.txt"
    If Not fso.FileExists(MySizeFile) Then
        Set WriteSize = fso.OpenTextFile(MySizeFile,2,True)
        set objFile = fso.GetFile(strFile)
        WriteSize.Write objFile.Size
    End If
    Set ReadSize = fso.OpenTextFile(MySizeFile,1)
    LastSize = ReadSize.readall
    set objFile = fso.GetFile(strFile)
    If CLng(objFile.Size) = CLng(LastSize) Then 
        Call Pause(1) 'To sleep for 1 minute
    else
    Set WriteSize = fso.OpenTextFile(MySizeFile,2,True)
        MsgBox strFile & vbcr &"Last Size is : " & CLng(LastSize) & " bytes" & vbcr &_
        "New Size is : " & objFile.Size & " bytes" & vbcr &_
        "Size in Kb : "& CLng(objFile.Size/bytesToKb) & " Kb",VbExclamation,Title
    WriteSize.Write objFile.Size 
    end if
End Sub 
'**************************************************************************
'Checks whether a script with the same name as this script is already running
Function AppPrevInstance()   
    With GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")   
        With .ExecQuery("SELECT * FROM Win32_Process WHERE CommandLine LIKE " & CommandLineLike(WScript.ScriptFullName) & _
        " AND CommandLine LIKE '%WScript%' OR CommandLine LIKE '%cscript%'")   
            AppPrevInstance = (.Count > 1)   
        End With   
    End With   
End Function   
'**************************************************************************
Function CommandLineLike(ProcessPath)   
    ProcessPath = Replace(ProcessPath, "\", "\\")   
    CommandLineLike = "'%" & ProcessPath & "%'"   
End Function
'**************************************************************************
Sub Pause(Minutes)    
    Wscript.Sleep(Minutes*1000*60)    
End Sub   
'**************************************************************************

这是另一种可以监视和检查多个文件大小变化的方法:

Option Explicit
const bytesToKb = 1024
Dim Title,strFile,ListFiles
Title = "The File Size Checker by Hackoo 2015"
ListFiles = Array("c:\test.txt","E:\My test dossier\t.txt","E:\My test dossier\TmpLog.txt")
If AppPrevInstance() Then   
    MsgBox "There is an existing proceeding",VbExclamation,"There is an existing proceeding"    
    WScript.Quit   
Else   
    Do   
        Call Main(ListFiles)
        Call Pause(1) 'To Sleep for 1 minute
    Loop   
End If 
'******************************************************************
Sub Main(strFilesPaths)   
    Dim strFile   
    For Each strFile In strFilesPaths     
        CheckSize(strFile)   
    Next   
End Sub   
'******************************************************************
Function StripPath(Path)   
    Dim arrStr : arrStr = Split(Path,"\")   
    StripPath = arrStr(UBound(arrStr))   
End Function   
'*****************************************************************
Sub CheckSize(File)
    Dim ws,fso,objFile,ReadSize,WriteSize,MySizeFile,Temp,LastSize,strFile
    Set ws = CreateObject("wscript.Shell")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Temp = ws.ExpandEnvironmentStrings("%Temp%")
    For Each strFile In ListFiles 
        MySizeFile = Temp & "\" & StripPath(strFile)
        If Not fso.FileExists(MySizeFile) Then
            Set WriteSize = fso.OpenTextFile(MySizeFile,2,True)
            set objFile = fso.GetFile(strFile)
            WriteSize.Write objFile.Size
        End If
        Set ReadSize = fso.OpenTextFile(MySizeFile,1)
        LastSize = ReadSize.readall
        set objFile = fso.GetFile(strFile)
        If CLng(objFile.Size) = CLng(LastSize) Then 
        else
            Set WriteSize = fso.OpenTextFile(MySizeFile,2,True)
            MsgBox strFile & vbcr &"Last Size is : " & CLng(LastSize) & " bytes" & vbcr &_
            "New Size is : " & objFile.Size & " bytes" & vbcr &_
            "Size in Kb : "& CLng(objFile.Size/bytesToKb) & " Kb",VbExclamation,Title
            WriteSize.Write objFile.Size 
        end if
    Next
End Sub 
'**************************************************************************
'Checks whether a script with the same name as this script is already running
Function AppPrevInstance()   
    With GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")   
        With .ExecQuery("SELECT * FROM Win32_Process WHERE CommandLine LIKE " & CommandLineLike(WScript.ScriptFullName) & _
            " AND CommandLine LIKE '%WScript%' OR CommandLine LIKE '%cscript%'")   
            AppPrevInstance = (.Count > 1)   
        End With   
    End With   
End Function   
'**************************************************************************
Function CommandLineLike(ProcessPath)   
    ProcessPath = Replace(ProcessPath, "\", "\\")   
    CommandLineLike = "'%" & ProcessPath & "%'"   
End Function
'**************************************************************************
Sub Pause(Minutes)    
    Wscript.Sleep(Minutes*1000*60)    
End Sub   
'**************************************************************************
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于检查文件大小是否比之前的检查有所增加的 VB 脚本 的相关文章

  • VBscript 使用输出参数从 MySQL 调用存储过程[重复]

    这个问题在这里已经有答案了 编辑20220219 使用下面的 VBSCRIPT 代码解决 SQL CALL NewCheckData pOld cn execute SQL SQL SELECT pOld Set RS cn execute
  • 将字符串转换为 UTF-8

    例如 我有一个分配给编码为 ansi 的变量的字符串str 如何将其编码为 UTF 8 你的意思是当它写入文件时 像这样 Set stream CreateObject ADODB Stream stream Open stream Typ
  • 并排启动两个资源管理器窗口

    有没有办法使用批处理脚本并排 垂直平铺 启动两个资源管理器窗口 如果没有 我该如何使用 VBS 来做到这一点 我已经修改了上面的VBS脚本Hackoo完全按照OP的要求去做 脚本中的注释准确地解释了它将做什么 如果两个窗口未设置到正确位置
  • 我可以直接从命令行运行 vbscript 命令(即没有 vbs 文件)吗?

    在Python中你没有义务使用文件 你可以指定 c 并通过命令行上的字符串将 Python 命令提供给 Python 解释器 我可以用 vbscript 达到相同的结果吗 我见过需要您使用批处理脚本的解决方案 但是如果我所在的系统具有零写入
  • 如果 vbs 脚本崩溃,请重新启动它

    我正在尝试制作一个 vb 脚本 如果它崩溃 它将重新启动另一个 vb 脚本 我搜索了又搜索 但我得到的只是如何重新启动程序 并且由于 vb 脚本是后台进程 因此当您在 Win32 Process 中搜索时它不起作用 这是我的代码 set S
  • 顺序执行批处理文件

    dim shell x y x D d y c bat x set shell createobject wscript shell shell run y shell run a bat set shell nothing 当我运行此脚本
  • 经典的 asp/vbscript - 使用正则表达式修改所有 href

    在经典 ASP VB 脚本 中 我需要通过对当前 url 进行编码并在其前面挂起来修改字符串中包含的多个不同的 href 基本上 我想让所有的 href 都通过我的redirect asp 并将现有的 href 编码传递到新链接中 例如 现
  • 为什么根据检索顺序从 ADO Recordset 中获取空值而不是正确值? (DB表有NTEXT值)

    我有一个数据库表有两个datetime我需要使用 VBScript 从 ASP 页面读取可为空的列 这是我写的代码 Set cmd Server CreateObject ADODB Command With cmd ActiveConne
  • 如何从 HTA 中启动批处理文件

    我有一个基本的 HTA 其中我尝试通过按钮启动批处理文件 但是当我尝试启动批处理文件时 它不会运行 当我按下按钮时 将启动命令提示符窗口 但不会运行脚本 这是代码的简单示例
  • 如何设置任务在使用 vbs 登录时以当前用户身份运行而无需管理员权限?

    从命令行 我可以创建一个在登录时运行的计划任务 无需管理员权限或用户输入密码来设置任务 但是我必须使用 xml 文件来执行此操作 下面是一个示例 xml 其中 Domain User 部分必须在运行时替换为当前用户的域和名称
  • 使用 ASP 将参数传递给存储过程

    我正在尝试将一些参数传递给经典 ASP 中的 SQL 存储过程 我看过几篇关于此的帖子 不确定我做错了什么 因为我似乎没有看到我的差异 set conn CreateObject ADODB Connection conn open DSN
  • 在vbscript中读取文本文件的某一行

    有没有办法使用 vbscript 读取文本文件的某一行并将其存储为变量 谢谢 试试这个例子 Option Explicit Dim ws MyFile Set ws CreateObject WScript Shell MyFile Win
  • 使用 VBscript 检查计算机是否被锁定

    如何使用 VBscript 检查计算机是否已被锁定 我想在计算机锁定后停止应用程序运行 并在计算机解锁后再次运行它 您可以尝试检查是否存在logonui exe过程 如果找到它 则计算机已锁定或未登录 Function IsLocked s
  • 从 VBS 运行同一目录中的批处理文件

    我有一个 VBScript 应该运行 bat 或 vbs 文件 但它不起作用 它出现一个错误 指出无法找到该文件 无论我是否放入文件路径 我认为这并不重要 因为它位于同一目录中 所以我的问题是 如何从 VBScript 中启动 bat 文件
  • VBscript“预期语句”错误

    我正在开发一个 vbscript 程序 但出现了 预期语句 错误 我找不到错误 我看过这个错误的一些示例 但它们对我没有帮助 我是 vbscript 新手 这是代码 Sub SetText tx lw Dim t l r a t 1 l L
  • VBScript从txt文件中读取多个文件名并列出目录中不存在的文件名

    我是 VB 脚本编写的新手 我试图找到一种方法 读取以文本行形式写入特定文本文件内的文件名列表 检查这些文件是否与脚本位于同一目录中 将不存在的文件名写入输出文件 missing txt 根据我的研究 似乎一个好的方法是使用 FSO 并读取
  • 如何修复此“输入超出文件末尾”错误? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须找到包含以下内容的所有步骤PGM FTP然后阅读所有行 直到找到另一个没有的步骤PGM FTP 它可以是任何东西 除了FTP 我需要
  • 如何在VBS中使用Excel内置常量[重复]

    这个问题在这里已经有答案了 我想使用VBScript而不是VBA来处理EXCEL 但是我在调 用Range Find方法时遇到了代码错误 见下文 Function find range wb domain var Dim sheet Dim
  • 从“查找”结果中出现“下标超出范围”错误

    我想在 Excel 工作表中查找一个字符串 Excel 单元格值是使用公式计算的 当我运行这段代码时 Set firstExcel CreateObject Excel application firstExcel Workbooks Op
  • 使用ASP/VB获取节点属性值

    我有以下 XML 架构

随机推荐

  • 访问令牌没有 openid 范围

    我正在做 sso 示例 travelocity com 示例 当我尝试使用此命令通过 oauth 访问令牌访问用户信息时 卷曲 k H 授权 承载b68ba941c9da3d2644d8a63154d28 https localhost 9
  • Java日期排序方法?

    我有一个日期字符串数组 格式为 2010 05 04 11 26 46 0530 如何检查数组中的特定日期是否 gt 今天 thanks DateFormat df new SimpleDateFormat yyyy MM dd HH mm
  • 如何重定向消息以在 Django 模板中显示它们?

    我有一个验证并保存表单的视图 保存表单后 我想重定向回 l ist object 视图 并显示成功消息 客户 xyz 的表单已成功更新 HttpResponseRedirect 似乎不起作用 因为它只有一个 url 参数 无法传递字典 我尝
  • 忽略对角线的 Numpy 数组的最小值

    我必须找到忽略对角线元素的 numpy 数组的最大值 np amax 提供了忽略特定轴来查找它的方法 我怎样才能实现相同的忽略所有对角线元素 你可以使用面膜 mask np ones a shape dtype bool np fill d
  • 在 MAC 上使用 Xamarin Studio 运行 Selenium 测试

    我正在尝试运行我创建的测试Visual Studio 2010 using Selenium WebDriver 在使用 Xamarin Studio 的 MAC 中 我有chromedriver exe作为 EmbeddedResourc
  • 它不是将数据插入数据库

    我想将数据插入到Image Question桌子 但它不会执行插入操作Image Question Table 我收到两个错误 注意 未定义的偏移量 0 in 第 305 行 注意 未定义的偏移量 第 305 行上的 3 in 这是您可以使
  • 如何解决“无法解析某些模块 oracledb”?

    我已经设置了一个流星项目并导入了oracledb节点包 https github com oracle node oracledb 但是在通过启动项目后meteor run我收到控制台构建错误 说明Unable to resolve som
  • 将任何数据类型序列化为向量 - 使用reinterpret_cast?

    我在搜索中没有找到任何直接相关的内容 所以如果这是重复的 请原谅 我想要做的是通过网络连接序列化数据 我的方法是将我需要传输的所有内容转换为std vector lt uint8 t gt 并在接收端将数据解包到适当的变量中 我的方法如下
  • 方法可以变成静态的,但是应该吗?

    ReSharper 喜欢指出每个 ASP NET 页面的多个可以静态化的函数 如果我将它们设为静态会对我有帮助吗 我应该将它们设为静态并将它们移至实用程序类吗 在我看来 性能 命名空间污染等都是次要的 问问自己什么是合乎逻辑的 该方法在逻辑
  • xsl:如何选择节点中的前x个字符?

    我在 XML 文档中有以下节点
  • Android,我可以使用 putExtra 传递多个值吗

    我想将两个值传递给另一个活动 我可以用 putExtra 来做到这一点 还是必须以更复杂的方式来做到这一点 从我的阅读看来 例如 这样的东西可以工作吗 public final static String ID EXTRA com fnes
  • 删除 Firefox 中的默认选择框箭头

    我必须删除 Firefox 中的默认选择框箭头 我使用了下面的代码 webkit appearance none moz appearance none background rgba 0 0 0 0 它在 Chrome 中运行良好 但它在
  • 保存照片并立即使用

    我有以下用于拍照并将其保存到相机胶卷的代码 我需要能够在保存后使用它 而不必返回图库并选择它 我还没有找到任何关于如何执行此操作的示例 IBOutlet weak var imagePicked UIImageView IBAction f
  • 为 webRTC 使用特定端口

    当使用 webRTC 创建点对点音频连接时 如果用户位于路由器后面 我们使用的 STUN 服务器将返回公共 IP 现在在 ICE 对象中 我可以看到 rport 始终介于 50000 及以上 有没有办法使用特定端口 以便用户不必打开所有这些
  • Servlet 3.1 - 多部分异步处理

    我正在测试 Servlet 3 1 API 来处理多部分请求 我对同步处理某些部分 文本字段 和异步处理其他部分 文件字段 感兴趣 乍一看 它似乎在 Servlet 3 1 中不可用 要么在异步上下文中通过 request getInput
  • 使用adapter-static时如何在sveltekit上使用获取参数?

    我在构建时收到错误消息 无法访问url searchParams在启用预渲染的页面上 如何加载和使用get参数 svelte config js import adapter from sveltejs adapter static imp
  • Twitter bootstrap - 单击时聚焦于模式内的文本区域

    刚刚开始使用 bootstrap 这真是太棒了 我正在尝试解决这个问题 我在模式窗口内有一个用于反馈的文本区域 效果很好 但我希望当您单击按钮激活模式时 焦点位于文本区域上 而且我似乎无法让它发挥作用 这是一个小提琴 http jsfidd
  • 如何更改 Grafana 中的背景颜色?

    我想修改 Grafana 中的深色主题 以便它使用 000000作为背景颜色 我见过 如何更改Grafana的默认黑色 https stackoverflow com questions 41006070 how to change def
  • 使用 msbuild 从 VS 2008 升级到 2010 时未保留构建顺序和依赖项

    我正在升级 VS 2008 解决方案以在 VS 2010 上运行我成功地在 VS 2010 中构建 我现在的下一步是配置运行 TFS 2008 的构建机器每当我开始构建时 它都会按字母顺序执行我的项目 而不考虑依赖关系 我用谷歌搜索了很多
  • 用于检查文件大小是否比之前的检查有所增加的 VB 脚本

    我需要一个 VB 脚本来检查文件大小并捕获它 并在下一次检查中将其与上一次检查进行比较 如果大小增加 则应提示文件大小增加 你可以尝试一下这个vbscript Option Explicit const bytesToKb 1024 Dim