Windows脚本对最后修改时间超过24小时的文件进行处理

2023-11-19

这次我接到一个任务,是写一个windows上运行的脚本,讲某个文件夹下最后修改时间超过24小时的文件移到另一个文件夹,然后在判断有生成的文件超过十分钟的关闭一个程序再启动它。上网搜了一下,有很多相关的,比如说把最后修改时间的文件超过一天的删除掉,如果用bat来写方法很多但异常麻烦,感觉版本之间还有差异。最难受的是人家要的是超过二十四小时,你如果想把前一天的文件判断出来很容易,用里面vbs或者别的方法获取,判断不是今天就OK了。有时间限制,如果昨天晚上的文件,今天处理掉了就不符合要求了。bat文件可以取日期,但是你要做个二十四小时的判断再判断有没有超过15分钟,太复杂太难了,甚至还要修改一下系统注册表,改完使用后再改回去,而且版本之间有差异,也许起作用但会在命令行报错。
后来客户提醒说用powershell来做更好,给了我个例子,我研究了一下感觉打开了一个新的世界大门。powershell功能很强大,很多函数可以用,界面看起来也比CMD的命令行帅气的多。bat批处理文件跟他比起来差很多,也好用不用绞尽脑汁想方法组合起来完成一些功能,这里面函数很多很方便,确实是powerful shell强大的shell。
话不多说,把我的代码放出来看看。

下面是我的一个脚本zp.ps1(中间没有把关闭程序和启动程序加进去,我在后面又写了个小脚本来给大家参考关于程序关闭启动,很简单。),要输入参数一个是expire(大小写都行,程序有处理)另一个是一个路径
进入powershell,不关你是直接进入还是通过命令行(当然你第一次用要把脚本权限放开,类似我们浏览器要把js限制打开,可用set-executionpolicy remotesigned,最好是管理员身份在powershell命令行下输入。)
输入以下命令运行脚本
zp.ps1 expire E:\powershell

    Param ( [string] $monitor_option , [string] $monitor_path)

New-Variable const_expire_hours -24
New-Variable const_expire_minutes -10


New-Variable files (Get-ChildItem $monitor_path\*.csv)



New-Variable files_expire_cnt 0
New-Variable files_exceeded_cnt 0
New-Variable files_cnt 0

#Current date time
$Current_date_time=Get-Date
 Write-Output (" Current date time: " + $Current_date_time )

#Folder to check
 Write-Output (" Folder to check: " + $monitor_path )

#.csv files in  %PATH%($monitor_path) last modified date 
ForEach ($file in $files) {

Write-Output ( $file.Name+ ".csv files in  " + $monitor_path + " last modified date " + $file.LastWriteTime)
}



ForEach ($file in $files) {
$now=Get-Date
    If ($file.LastWriteTime -lt $now.AddHours($const_expire_hours)) { $files_expire_cnt += 1 }

}


#24 hours
If ($monitor_option.ToLower() -eq "expire") {

Write-Output ("No of CSV files exceeeded 24 hours: " + $files_expire_cnt)

If ($files_expire_cnt -gt 0) { 

    ForEach ($file in $files) {

        If ($file.LastWriteTime -lt $now.AddHours($const_expire_hours)) {

            Move-Item -path $file -destination $monitor_path\expired

            Write-Output ( $file.Name + " moved to " + $monitor_path + "\expired" )

        }

    }

   # Exit $files_expire_cnt 

}
}
#10 minuters
ForEach ($file in $files) {
$now=Get-Date
    If ($file.LastWriteTime -lt $now.AddMinutes($const_expire_minutes)) { $files_exceeded_cnt += 1 }

}
If ($monitor_option.ToLower() -eq "expire") {

Write-Output ("No of CSV files exceeeded 10 minutes: " + $files_exceeded_cnt)

If ($files_exceeded_cnt -gt 0) { 

        ForEach ($file in $files) {

                        If ($file.LastWriteTime -lt $now.AddMinutes($const_expire_minutes)) {

                Write-Output ( $file.Name + " exceeded " + $monitor_path  )


            }

        }

        Exit $files_exceeded_cnt

    }

    Exit 0

}

下面是我写的一个启动程序小脚本,不需要参数,大家可以玩一下,根据自己想法启动关闭程序#是注释大家可以打开注释,每个命令都玩一下。powershell让我对微软印象提升了不少,没想到我们天天用的Windows系统还有这个功能,真是涨了见识。
process.ps1
Start-Process notepad -Verb runas
#Start-Process notepad -Verb runas
#dota2launcher
#Start-Process E:\DOTA2Setup20161010\Dota2\dota2launcher -Verb runas
#Stop-Process E:\DOTA2Setup20161010\Dota2\dota2launcher
#get-help Stop-Process -examples
#stop-process -name dota2launcher
#set-executionpolicy remotesigned

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows脚本对最后修改时间超过24小时的文件进行处理 的相关文章

随机推荐

  • 华为OD机试 - 解密犯罪时间(Java)

    题目描述 警察在侦破一个案件时 得到了线人给出的可能犯罪时间 形如 HH MM 表示的时刻 根据警察和线人的约定 为了隐蔽 该时间是修改过的 解密规则为 利用当前出现过的数字 构造下一个距离当前时间最近的时刻 则该时间为可能的犯罪时间 每个
  • 深度学习中的IoU概念理解

    1 什么是IoU Intersection over Union IoU是一种测量在特定数据集中检测相应物体准确度的一个标准 IoU是一个简单的测量标准 只要是在输出中得出一个预测范围 bounding boxex 的任务都可以用IoU来进
  • Delphi中关于资源释放(Free,Relealse,FreeAndNil)

    根据日常编程经验 得出一些Delphi中关于资源释放的体会 假如有对象Obj为TObject类型 1 Obj Free直接释放资源后 调用OnDestroy事件 但是没有将Obj指针值置为Nil 2 Obj Release 等待资源不再使用
  • Kali proxychains

    1 什么是proxychains 在linux系统中有很多软件是不支持代理的 但是proxychains 却可以让不支持代理的软件 也能走代理通道 支持HTTP HTTPS SOCKS4 SOCKS5 等多种代理协议 而且还能配置代理链 可
  • struct和typedef struct的用法和区别

    1 在C和C 里的不同 在c中定义一个结构体类型用typedef typedef struct Student int m Stu 用这种形式定义的时候 在声明结构体变量的时候可用 Stu stu1 这种形式也等同于struct Strde
  • Open3D (C++) 点云添加随机噪声

    Open3D C 点云添加随机噪声 在三维点云数据中 噪声是不可避免的 它可能是由于传感器测量误差 环境因素或其他未知影响造成的 为了模拟这些噪声 我们可以使用 Open3D 中提供的工具将噪声添加到点云数据中 本文将介绍如何使用 Open
  • postgres导入备份出现'无效的命令\N'

    在使用pg dump对数据库进行备份的时候 到出成默认的格式 导致插入数据时 提示无效的命令 N 解决方法 使用custom格式导出 然后用pg restore导入 导出 pg dump F custom U username d dbna
  • 下拉框,文本域和文件域

    p 国家 p
  • VS中报错IntelliSense: argument of type "void *" is incompatible with parameter of type "const char *"

    在用VS编写C 程序的时候 遇到这样的问题IntelliSense argument of type void is incompatible with parameter of type const char 但是给的例程确实传入参数就是
  • ListView的操作

    转自http blog sina com cn s blog 43eb83b90100mhrs html 这一篇对我也不错http blog csdn net xiaohan2826 article details 8603015 小白叔叔
  • PCIe 5.0 规范最新更新及PCIe 5.0测试挑战​

    PCIe 5 0 基础规范 v1 0 在 2019 年年中发布以后 Synopsys 发布了世界上第一款支持 PCIe 5 0 基础规范 v1 0 的 IP 并展示了在其实验室验证发射机 接收机 Tx Rx 性能的环境 Intel 也在 2
  • 基于MATLAB手写体数字识别程序设计

    基于MATLAB手写体数字识别程序设计 手写体识别由于其实用性 一直处于研究进步的阶段 本文主要针对的是对0 9十个手写数字体脱机识别 在Matlab中对样本部分为进行16特征的提取 分别采用最小距离法 最近邻法 KNN法以及BP神经网络算
  • UNIX网络编程-recv、send、read、write之间的联系与区别

    原文链接 http www cnblogs com mhscn p 3911284 html include
  • 在centos7中安装docker

    一 前置条件 64 bit 系统 kernel 3 10 CentOS 7 1 检查 使用 uname r 检查 kernel 版本 uname r 3 10 0 327 el7 x86 64 二 安装 yum安装方式 1 使用 sudo
  • Hdfs下载报错,(null) entry in command string: null chmod 0644问题的解决

    解决 缺少系统文件hadoop dll文件 1 下载hadoop dll文件 2 把文件放在 windows system32目录下
  • python 根据年份,月份信息显示此月份天数

    1 普通方法 2 year int input 请输入年份 3 month int input 请输入月份 1 12 4 if month 2 5 if year 4 0 and year 100 0
  • Qt QtCreator 所有版本官方下载地址

    直接跳过输入账号 选择所需版本 废话不多说 直接上链接 1 所有版本QT下载地址 http download qt io archive qt 2 所有Qt Creator下载地址 http download qt io archive q
  • Unity知识点详解面试题大全

    1 请简述值类型与引用类型的区别 答 区别 1 值类型存储在内存栈中 引用类型数据存储在内存堆中 而内存单元中存放的是堆中存放的地址 2 值类型存取快 引用类型存取慢 3 值类型表示实际数据 引用类型表示指向存储在内存堆中的数据的指针和引用
  • tinystl实现(第二十步:string实现)

    经过长时间的学习终于可以开始tinystl的仿 chao 写工作了 本文参考了这位大神的github 坦白讲我只是补充了注释 因为tinystl的代码真的非常经典而我又没什么这种大型项目的经验 所以只能这样做 不过相信能够有助于大家的学习
  • Windows脚本对最后修改时间超过24小时的文件进行处理

    这次我接到一个任务 是写一个windows上运行的脚本 讲某个文件夹下最后修改时间超过24小时的文件移到另一个文件夹 然后在判断有生成的文件超过十分钟的关闭一个程序再启动它 上网搜了一下 有很多相关的 比如说把最后修改时间的文件超过一天的删