本帖最后由 Nsqs 于 2023-9-5 17:26 编辑
- # 2>nul&cls&title by Nsqs&powershell -noprofile -executionpolicy bypass "gc '%~f0'|Out-String|iex" & pause&exit
-
- $esc=[char]0x1b
- $ReadDate=-1
- $SourcePath=[System.IO.DirectoryInfo]::new('.').FullName
- $wa=New-Object -ComObject Word.Application
- $Main=$wa.Tasks|?{$_.Name -match 'by Nsqs'}
- do{
- cls
- " 使用方法
-
- $esc[92m输入日期时间,会计算当前目录下创建日期为前一天的文件$esc[0m
-
- 比如输入: $esc[96m参数 说明$esc[0m
- $esc[93m输入参数$esc[0m $esc[6;91m2023-9-20$esc[0m 那么会取当前目录下 $esc[91m2023$esc[0m $esc[94m年 $esc[91m9$esc[0m $esc[94m月$esc[0m $esc[91m19$esc[0m $esc[94m日$esc[0m 这一天的日期的文件, 输入格式随意 xxxx-/xx-/xx 都行
- $esc[93m输入参数$esc[0m $esc[6;91m-d$esc[0m $esc[91mD:\ABC$esc[0m 会跳转至目标路径,然后可以再做处理
- $esc[93m输入参数$esc[90m $esc[6;91m-e$esc[0m 设置需要处理的文件, 或多个文件以逗号分隔,比如 $esc[91m*.txt,*.xlsx$esc[0m 等等
- $esc[93m输入参数$esc[90m $esc[6;91m-r$esc[0m 返回当前目录
-
- $esc[93m示例:$esc$esc[94m
- -d C:\sample\ -e *.txt$esc[0m
- "
- "当前目录所在地址:`n$esc[94m$((gl).Path)$esc[0m`n"
- "当前可能指向的文件:`n$esc[6;94m$(if(!$ext){'所有文件'}else{$ext})$esc[0m`n"
- if($ReadDate -match '^(-d|-e)$'){"$esc[91m参数必须包含空格隔开!$esc[0m"}
- $ReadDate=Read-Host @(if($ReadDate -eq -1 -or $ReadDate -match '-[ed]'){'请输入日期'}elseif($ReadDate -notmatch '\d{4}.\d+.?\d*' -and $ReadDate){'输入的不是日期格式'}else{'输入不能为空!(可输入q退出)'})
- if($ReadDate -match '-d '){pushd ([regex]::Matches($ReadDate,'.*-d (.+?) +?.*').groups[1].value)}
- if($ReadDate -match '-e '){$ext=[regex]::Matches($ReadDate,'.*-e (.+ *).*').groups[1].value}
- if($ReadDate -match '^-r$'){pushd $SourcePath}
- }until($ReadDate -eq 'q' -or $ReadDate -match '\d{4}.\d+.?\d*' -and $ReadDate -notmatch '^-d \d{4}.\d+.?\d*$')
- if($ReadDate -eq 'q'){$Main.Close();return}
- $ReadDate=$ReadDate -replace ' *-d \d{4}.\d+.?\d* *'
- $ReadDate=[regex]::Matches($ReadDate,'.*(\d{4}.\d+.?\d*).*').groups[1].value
- if($ReadDate -match '^\d{4}.\d+$'){
- $ReadDate=[datetime]$ReadDate
- $lastDay=[datetime]::DaysInMonth($ReadDate.Year,$ReadDate.Month)
- $ReadDate=[datetime]"$($ReadDate.ToString('yyyy-MM'))-$lastDay"
- }else{
- $ReadDate=[datetime]$ReadDate
- }
- $FileDate=dir $ext -File|?{$_.CreationTime.Date -eq $ReadDate.AddDays(-1)}
- if(!$FileDate){"$esc[91m发现没有找到当前目录下昨天的日期类文件$esc[0m";return}
- $FileDate|%{
- $folder=([datetime]$ReadDate).AddDays(-1).ToString('yyyy-MM-dd')
- md $folder -Force
- move $_ $folder -Force
- }
- "$esc[91m`n`n处理完毕!$esc[0m"
复制代码 以文件创建日期为准 |