bat批处理之&按文件属性年月自动归类
来源是获取文件的属性里面修改时间为判断标准:victory:因为这样子设定时间会准确一些:lol
遍历目标文件并依次按年月分类
方案1
文件夹架构 2024年01月 2024年02月
@echo off
rem 批处理保存为ansi编码格式名称
rem 文件格式为【XX年XX月】
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /a-d') do (
if "%%~xa" neq ".bat" (
for %%b in ("%%a") do (
set "fileModDate=%%~tb"
set "year=!fileModDate:~0,4!"
set "month=!fileModDate:~5,2!"
set "targetFolder=!year!年!month!月"
if not exist "!targetFolder!" (
md "!targetFolder!"
)
move "%%a" "!targetFolder!"
)
)
)
方案2
文件夹架构 一级 二级 文件夹
2024年----1月
----2月
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /a-d') do (
if "%%~xa" neq ".bat" (
for %%b in ("%%a") do (
set "fileModDate=%%~tb"
set "year=!fileModDate:~0,4!"
set "month=!fileModDate:~5,2!"
set "targetFolder=!year!年\!month!月"
if not exist "!targetFolder!" (
md "!targetFolder!"
)
move "%%a" "!targetFolder!"
)
)
)
方案3
文件夹架构 一级 二级 三级文件夹
2024年----1月----12日
----13日
----2月 ---09日
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /a-d') do (
if "%%~xa" neq ".bat" (
for %%b in ("%%a") do (
set "fileModDate=%%~tb"
set "year=!fileModDate:~0,4!"
set "month=!fileModDate:~5,2!"
set "day=!fileModDate:~8,2!"
set "targetFolder=!year!年\!month!月\!day!日"
if not exist "!targetFolder!" (
md "!targetFolder!"
)
move "%%a" "!targetFolder!"
)
)
)
大家也可以以此代码自行修改精确到时间或者星期几
加个判断到上午下午或者晚上
有点太那啥鸡肋了,我就不整了
使用方法【把代码保存下来,粘贴到txt,将.txt后缀改为.bat后缀,放到自己需要处理的目录即可】
测试文件请做好备份!!
BAT成品下载下载链接:
免费评分支持一下谢谢 红蓝黄 发表于 2024-7-24 05:04
提取文件有两个问题:1、文件重名,可以重命名文件吗?2、提取完文件,把空文件夹删除
很好的建议,以下是提取文件后删除空文件夹,
遇到同名文件会在后缀从 _1 开始递增
请做好做好备份 。
@echo off
rem 提取文件到根目录
for /r "%cd%" %%f in (*) do (
set "newName=%%~nf"
set "ext=%%~xf"
setlocal enabledelayedexpansion
if exist "!newName!!ext!" (
set /a count=1
:loop
if not exist "!newName!_!count!!ext!" (
move "%%f" "!newName!_!count!!ext!"
goto :next
)
set /a count+=1
goto :loop
)
move "%%f" "!newName!!ext!"
:next
endlocal
)
rem 删除空文件夹
for /d %%d in (*) do (
rd "%%d" 2>nul
) 学习了,这个很不错,谢谢分享 新思路。 请务必备份了先测试文件!!!!!
以下代码用于提取根目录的所有文件
做好备份 在测试的文件夹内提取出文件再做归类
@echo off
for /f "delims=" %%a in ('dir /a-d /b /s ') do (move "%%~a" ./) 学习新思路了,我自己也试试看。 zhengzhenhui945 发表于 2024-7-24 01:12
请务必备份了先测试文件!!!!!
以下代码用于提取根目录的所有文件
做好备份 在测试的文件夹内提取 ...
提取文件有两个问题:1、文件重名,可以重命名文件吗?2、提取完文件,把空文件夹删除 红蓝黄 发表于 2024-7-24 05:04
提取文件有两个问题:1、文件重名,可以重命名文件吗?2、提取完文件,把空文件夹删除
我做了个py脚本的,和楼主的功能差不多,但是可以检查重名文件。https://www.123pan.com/s/lwtbVv-Kf6KA.html?提取码:LVCB 超有用的 学习学习,谢谢分享
在工作中很实用,如果可以搞定相同文件名就好了