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

[文本处理] 按照日期分类汇总

[复制链接]
发表于 2026-2-8 00:33:00 | 显示全部楼层 |阅读模式
大家好,请教一个问题,D:123里面有很多 *.txt文件,如何把这些文件按照所产生的日期分类汇总到对应日期的文件夹中

例如:D:123里面  有  1.txt  (产生的日期为:2026-01-14)  2.txt (产生的日期为:2026-2-5)
把1.txt 和 2.txt 分别建立对应日期文件夹并move到对应文件夹中
发表于 2026-2-8 10:59:19 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-2-8 11:06 编辑

回复 1# 司马光2008

以下代码存为 test.bat 运行,与 *.txt 同目录...

  1. @echo off &for /f "delims=" %%F in ('dir /b/a-d *.txt') do for /f "delims= " %%t in ("%%~tF") do (
  2.    set "f=%%F" &setlocal enabledelayedexpansion &set "y=%%t"
  3.    md "!y:/=-!" &move /y "!f!" "!y:/=-!" &endlocal ) 2>nul
  4. pause&exit/b
复制代码
发表于 2026-2-8 17:21:29 | 显示全部楼层
本帖最后由 77七 于 2026-2-8 17:23 编辑

gemini ai ,答案还是很全面的。
这是一个非常实用的需求。在 Windows 系统下,最简单且高效的方法是使用 PowerShell 脚本。它可以自动读取文件的“创建日期”或“修改日期”,创建文件夹并完成移动。

你可以按照以下步骤操作:

方法:使用 PowerShell 脚本
在桌面或文件夹中新建一个文本文档(.txt)。

将下面的代码复制并粘贴到文档中:

PowerShell


  1. # 设置目标根目录
  2. $sourceDir = "D:\123"

  3. # 切换到该目录
  4. Set-Location $sourceDir

  5. # 获取所有 .txt 文件
  6. $files = Get-ChildItem -Filter "*.txt" -File

  7. foreach ($file in $files) {
  8.     # 获取文件的最后修改日期(格式化为 yyyy-MM-dd)
  9.     # 如果你想按“创建日期”,请将 LastWriteTime 改为 CreationTime
  10.     $date = $file.LastWriteTime.ToString("yyyy-MM-dd")
  11.    
  12.     # 检查对应日期的文件夹是否存在,不存在则创建
  13.     if (!(Test-Path $date)) {
  14.         New-Item -ItemType Directory -Name $date
  15.     }
  16.    
  17.     # 移动文件到目标文件夹
  18.     Move-Item -Path $file.FullName -Destination $date
  19. }

  20. Write-Host "处理完成!" -ForegroundColor Green
  21. pause
复制代码

保存文件,并将文件后缀名从 .txt 修改为 .ps1(例如:move_files.ps1)。

右键点击该文件,选择 “使用 PowerShell 运行”。

关键点说明
日期标准:上面的脚本使用的是“最后修改日期”(LastWriteTime),这通常是文件内容确定的时间。如果你希望严格按照“创建日期”,只需把代码里的 LastWriteTime 改为 CreationTime 即可。

文件夹格式:脚本会自动创建形如 2026-01-14 的文件夹。

安全性:Move-Item 是移动操作。如果你担心出错,可以先将 Move-Item 改为 Copy-Item 进行测试,确认无误后再执行移动。

进阶:如果你想通过 CMD (批处理) 实现
虽然 PowerShell 更强大,但如果你更习惯普通的 .bat 文件,可以使用以下简单的逻辑(仅限中文系统环境):

代码段


  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "D:\123"

  4. for %%i in (*.txt) do (
  5.     set "t=%%~ti"
  6.     set "folder=!t:~0,10!"
  7.     set "folder=!folder:/=-!"
  8.     if not exist "!folder!" md "!folder!"
  9.     move "%%i" "!folder!"
  10. )
  11. pause
复制代码

注意:批处理对日期格式的抓取依赖于系统的区域设置,兼容性不如 PowerShell 稳定。
 楼主| 发表于 2026-2-8 22:41:37 | 显示全部楼层
感谢两位的帮忙
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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