找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 16240|回复: 5

[已解决][20元红包]按文本内容日期移动到自建日期目录求助

  [复制链接]
发表于 2022-11-14 11:34:44 | 显示全部楼层 |阅读模式
本帖最后由 lzymbz 于 2022-11-14 13:11 编辑

图片好像上传不了,我用文本说明一下,内容大值如下

Station_Id_C Year Mon Day Hour PRS PRS_Sea PRS_Max PRS_Min .............
59838 2020 10 12 16 1006.4000 1007.4000 .......
........................

59842 2020 10 15 16 1006.9000 1010.7000........

文本分隔符为空格,第二行有开始时间,最后一行有结束时间,分别是年月日时,现在希望能通过读取内容第二行及最后一行自动在当前目录建立2020 10 12 16-2020 10 15 16目录,并将当前文本文件移动到所建目录,如果文本没有检测到日期信息,可以跳过。如果能在整个文件处理完后将刚建的目录里面有多少个文件能统计出来,形成类似2020 10 12 16-2020 10 15 16(4)这样的目录,告诉我这个里面有4个文件那就更好了。
简单说就是一个按照文件所含数据日期时间对文件进行分类存档的小工具,本人小白,没有找到现有工具,感谢伸出援手的各位老师。

文件下载地址
https://wwu.lanzoue.com/b04p8bina
密码:aiji


联系方式:lzymbz,
支付与微信都为此号
发表于 2022-11-14 12:42:33 | 显示全部楼层
  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. pause
  5. #>
  6. dir *.txt|%{$start_time=(gc $_)[1].split(" ");$end_time=(gc $_)[-1].split(" ");$d=$start_time[1]+" "+$start_time[2]+" "+$start_time[3]+" "+$start_time[4]+"-"+$end_time[1]+" "+$end_time[2]+" "+$end_time[3]+" "+$end_time[4];if(Test-Path $d){Move-Item $_ $d}else{md $d;Move-Item $_ $d}}
  7. dir |%{if($_ -is [System.IO.DirectoryInfo]){$oldname=$_.FullName;$n=dir $_|Measure-Object|Select-Object -ExpandProperty count;$newname=$oldname+"("+$n+")";ren $oldname $newname}}
复制代码
发表于 2022-11-14 13:00:50 | 显示全部楼层
  1. <# :
  2. cls&echo off&cd /d "%~dp0"&mode con lines=5000
  3. set "self=%~f0"
  4. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal "%~f0"|Out-String|Invoke-Expression"
  5. pause
  6. exit
  7. #>
  8. $self=get-item -literal $env:self;
  9. $current=$self.Directory.FullName;
  10. $enc=[Text.Encoding]::GetEncoding('GB2312');
  11. $dic=@{};
  12. $files=@(dir -literal $current|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
  13. for($i=0;$i -lt $files.length;$i++){
  14.     $text=[IO.File]::ReadAllText($files[$i].FullName, $enc);
  15.     $arr=$text.trim().split("`r`n", [StringSplitOptions]::RemoveEmptyEntries);
  16.     if($arr.length -ge 3){
  17.         $m1=[regex]::match($arr[1].trim(), '^\S+\s+(\d{4}\s+\d+\s+\d+\s+\d+)');
  18.         $m2=[regex]::match($arr[$arr.length-1].trim(), '^\S+\s+(\d{4}\s+\d+\s+\d+\s+\d+)');
  19.         if($m1.Success -and $m2.Success){
  20.             $brr=$m1.groups[1].value -split '\s+';
  21.             $crr=$m2.groups[1].value -split '\s+';
  22.             $starttime='{0} {1} {2} {3}' -f $brr[0], $brr[1].PadLeft(2,'0'), $brr[2].PadLeft(2,'0'), $brr[3].PadLeft(2,'0');
  23.             $endtime='{0} {1} {2} {3}' -f $crr[0], $crr[1].PadLeft(2,'0'), $crr[2].PadLeft(2,'0'), $crr[3].PadLeft(2,'0');
  24.             $renge=$starttime+'-'+$endtime;
  25.             if(-not $dic.ContainsKey($renge)){
  26.                 $drr=New-Object -TypeName System.Collections.ArrayList;
  27.                 $dic.add($renge, $drr);
  28.             }
  29.             [void]$dic[$renge].add($files[$i]);
  30.         }
  31.     }
  32. }
  33. foreach($k in $dic.Keys){
  34.     $newfolder=$k+' ('+$dic[$k].count.toString()+')';
  35.     $newpath=$current+'\'+$newfolder+'\';
  36.     if(-not (test-path -literal $newpath)){[void][IO.Directory]::CreateDirectory($newpath);}
  37.     for($i=0;$i -lt $dic[$k].count;$i++){
  38.         write-host ($dic[$k][$i].Name+' --> '+$newfolder);
  39.         move-item -literal $dic[$k][$i].FullName $newpath -force -ErrorAction SilentlyContinue;
  40.     }
  41.     write-host "`r`n";
  42. }
复制代码

评分

参与人数 1技术 +1 收起 理由
lzymbz + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-11-14 14:15:44 | 显示全部楼层
回复 2# pd1


    抱歉,好像没有达到需求,谢谢你
发表于 2022-11-14 15:18:08 | 显示全部楼层
回复 4# lzymbz


    你问题解决了就行,不过没听懂哪个需求没达到
发表于 2022-11-14 15:18:42 | 显示全部楼层
本帖最后由 pd1 于 2022-11-14 15:19 编辑

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:46 , Processed in 0.020366 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表