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

2 篇文章 0 订阅
1 篇文章 0 订阅

这次我接到一个任务,是写一个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章安装WindowsServer2012R254分钟5节 1-1IT运维职位需要掌握的技能04:40 1-2介绍Windows版本06:39 1-3安装WindowsServer2012R19:35 1-4熟悉操作环境11:58 1-5高级启动选项11:27 第2章配置WindowsServer2012环境2小时32分钟12节 2-1取消增强的IE安全设置06:25 2-2设置IE安全首页和12:36 2-3安装桌面体验09:19 2-4安装管理工具09:35 2-5使用MMC整合管理工具02:53 2-6Windows上注册表24:55 2-7Windows上的服务18:57 2-8系统配置工具MSconfig09:47 2-9Windows高级安全防火墙10:19 2-10Windows高级防火墙220:34 2-11系统设置16:45 2-12管理设备10:18 第3章管理用户和组1小时35分钟9节 3-1用户SID和用户令牌09:32 3-2管理用户查看用户令牌11:36 3-3将用户添加到组04:04 3-4用户账户控制14:13 3-5更改密码 使用密码重置盘重设密码15:10 3-6使用WindowsPE重设管理员密码08:16 3-7镜像账户和缓存的网络凭证11:58 3-8管理保存的网络凭证08:51 3-9用户配置文件11:42 第4章搭建域环境1小时47分钟12节 4-1工作中和域适用场景12:31 4-2介绍如何搭建域环境08:20 4-3DNS定位域控制器05:08 4-4安装配置活动目录和DNS12:13 4-5安装活动目录后的检查02:51 4-6将计算机加入域07:42 4-7强制域控制器向DNS注册SRV记录07:16 4-8体验集成身份验证16:06 4-9集成身份验证如何实现13:39 4-10域控制器和集成身份验证06:43 4-11体验统一管理09:48 4-12介绍软件学院域环境05:09 第5章NTFS管理数据3小时16节 5-1介绍文件系统09:44 5-2NTFS权限应用规则10:01 5-3文件夹权限详解14:54 5-4高级NTFS权限06:28 5-5修改继承的权限06:56 5-6设置提交试卷文件夹权限14:27 5-7允许用户创建私有空间的文件夹权限05:39 5-8不允许修改提交的文件06:18 5-9文件文件夹的所有权13:45 5-10加密文件系统(EFS)原理详解14:35 5-11使用EFS加密文件16:35 5-12Bitlocker加密硬盘21:22 5-13数据压缩10:34 5-14移动文件对压缩和加密状态的影响08:04 5-15磁盘限额09:09 5-16卷影副本11:34 第6章搭建文件服务器1小时36分钟12节 6-1文件服务器要求17:17 6-2共享权限和NTFS权限12:29 6-3多次共享和隐藏共享04:31 6-4管理默认共享02:52 6-5发布共享文件夹到活动目录04:05 6-6访问共享文件夹方法03:56 6-7限制文件夹大小08:25 6-8介绍分布式文件系统DFS06:52 6-9准备DFS环境06:43 6-10安装和配置DFS18:04 6-11验证DFS容错02:39 6-12DFS妙用解决实际问题08:24 第7章性能优化41分钟4节 7-1任务管理器监控内存和CPU13:34 7-2资源监视器监控性能07:53 7-3性能监视器监控和跟踪性能13:23 7-4管理Windows日志07:04 第8章本地安全策略2小时20分钟12节 8-1密码策略14:28 8-2账户锁定策略12:18 8-3审核策略18:21 8-4给手机发短信报告安全事件14:15 8-5用户权利指派16:04 8-6安全选项12:24 8-7Guest身份和空密码访问11:39 8-8软件限制策略11:55 8-9启用高级审核策略11:28 8-10跟踪用户登录和关闭自动播放06:13 8-11禁止打开注册表和命令提示符03:19 8-12登录注销脚本08:00 第9章配置网络打印机57分钟10节 9-1本地打印机和网络打印机08:32 9-2安装打印服务器09:48 9-3设置打印机权限和打印时间06:53 9-4使用组策略部署打印机05:03 9-5使用脚本部署打印机04:10 9-6启用打印池04:49 9-7设置打印机优先级06:02 9-8将打印机发布到活动目录03:05 9-9Internet打印05:43 9-10添加网络接口打印机02:59 第10章磁盘管理3小时15分钟19节 10-1硬盘物理结构07:51 10-2主分区和逻辑分区12:10 10-3计算机启动过程14:53 10-4操作系统启动过程15:28 10-5基本磁盘管理11:42 10-6管理盘符和路径08:46 10-7介绍简单卷和条带卷08:31 10-8介绍镜像卷和RAID-510:30 10-9创建简单卷和条带卷07:19 10-10创建RAID-5和镜像卷06:45 10-11修复失败的镜像卷和RAID-505:40 10-12移动动态磁盘04:26 10-13介绍存储池和虚拟磁盘06:04 10-14创建存储池和虚拟磁盘16:14 10-15磁盘碎片整理19:36 10-16详解iSCSI网络存储10:10 10-17安装网络存储服务14:14 10-18配置网络存储服务器08:25 10-19WindowsStorageServer201206:21 第11章 网络负载均衡和流量控制1小时4分钟6节 11-1介绍NIC组合05:00 11-2配置网卡(NIC)组合12:46 11-3网络负载均衡应用场景13:30 11-4安装配置NLB16:05 11-5介绍QoS流量控制08:28
好的,以下是两个使用 PowerShell 编写的 Windows 脚本,分别用于对当前目录下的文件进行加密和解密: 加密脚本 encrypt.ps1: ```powershell # 定义加密密钥 $key = "MySecretKey123" # 获取当前目录下的所有文件 $files = Get-ChildItem -Path . -File # 对每个文件进行加密 foreach ($file in $files) { $encrypted = $file.FullName | ConvertTo-SecureString -Key $key $encryptedFile = $file.FullName + ".encrypted" $encrypted | ConvertFrom-SecureString | Out-File $encryptedFile Remove-Item $file.FullName } # 输出加密成功的信息 Write-Host "成功加密了" $files.Count "个文件。" ``` 解密脚本 decrypt.ps1: ```powershell # 定义加密密钥 $key = "MySecretKey123" # 获取当前目录下的所有加密文件 $files = Get-ChildItem -Path . -File -Filter *.encrypted # 对每个文件进行解密 foreach ($file in $files) { $encrypted = Get-Content $file.FullName | ConvertTo-SecureString $decrypted = $file.FullName -replace '\.encrypted$','' $encrypted | ConvertFrom-SecureString -Key $key | Out-File $decrypted Remove-Item $file.FullName } # 输出解密成功的信息 Write-Host "成功解密了" $files.Count "个文件。" ``` 请注意,这两个脚本也使用了一个自定义的密钥来进行加密和解密。在实际使用中,请根据需要修改密钥,确保安全性。同时,这两个脚本只对当前目录下的文件进行加密和解密,不会对子目录下的文件进行操作,如果需要操作子目录下的文件,请自行修改脚本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值