标题: [文件操作] 【已解决】批处理如何自动按年份+上下年 分类文件夹? [打印本页]
作者: zhengzhenhui 时间: 2024-7-25 15:28 标题: 【已解决】批处理如何自动按年份+上下年 分类文件夹?
本帖最后由 zhengzhenhui 于 2024-7-26 15:45 编辑
将当前目录及其子目录中的所有文件递归地提取到当前目录,在提取过程中,如果遇到同名文件,会为其添加一个递增的数字后缀以确保文件名的唯一性,对于提取到当前目录的每个文件(除了 .bat 文件),获取其修改日期,并根据月份确定上半年和下半年分类,结束后删除所有空目录
作者: qixiaobin0715 时间: 2024-7-25 16:12
别的地方未看,代码第46--70行可简化为:- if "!Month!" leq "06" (set "Season=上半年") else set "Season=下半年"
复制代码
作者: zhengzhenhui 时间: 2024-7-25 16:16
回复 2# qixiaobin0715
上半年和下半年那个单独拎出来处理没有问题的,就是提取根目录,并处理同名文件按数字排序,再删除空文件夹这段代码加进去整个都运行不了
作者: 77七 时间: 2024-7-25 16:24
ai写的错误代码,还这么长,没人愿意读80多行的ai错误代码,直接重新写反而更省事。
像移动文件重名添加序号,此类问题论坛内有很多相同帖子,没必要事事求助ai而忽视论坛吧?
作者: zhengzhenhui 时间: 2024-7-25 16:49
回复 4# 77七
搜索过了论坛应该是关键词没查询到位,我再找找 ,俩段分开可以用,拼一起就不行,主要是想了解是中间哪里出问题了
作者: 77七 时间: 2024-7-25 19:39
回复 5# zhengzhenhui
第34行的newname在哪里定义的?
如果想学习bat,先打好基础...没必要盯着ai写的垃圾代码,研究它哪里错了。
作者: zhengzhenhui 时间: 2024-7-25 20:02
回复 6# 77七
就是不会,才写自己凑半拉子交给ai来凑的,然后扣上面的字眼流程学习去印证的,论坛里面我是先搜了没有搜到,每个人学习的方法不一样,你要这样理解我也无话可说。
作者: zhengzhenhui 时间: 2024-7-25 20:32
本帖最后由 zhengzhenhui 于 2024-7-25 22:36 编辑
我先试的是,先提取目录下的文件,做同名按数字递增重命名,然后再获取文件修改日期做为分类,又试了一下先遍历所以文件,有同名按数字递增重命名,然后再获取文件修改日期做为分类,
作者: newswan 时间: 2024-7-25 20:49
先要说清除需求,这样:
将当前目录的子目录中的所有文件递归地提取到当前目录
移动的每个文件(除了 .bat 文件),获取其修改日期,并根据月份确定上半年和下半年分类?怎么分类
如果遇到同名文件,会为其添加一个递增的数字后缀以确保文件名的唯一性,
删除所有空目录
作者: 77七 时间: 2024-7-25 21:13
出于善意提醒,ai的很多代码即使能运行成功,但也是错的,不要被误导。以下代码一步到位,完成分类,避免了多余的添加序号问题。
- @echo off
- cd /d "%~dp0"
- set "dp=%~dp0"
- set "dp=%dp:\=\\%"
- set n=1
- for /f "delims=" %%i in ('dir /b /s /a-d ^|find /v "%~f0" ^|findstr /rvibc:\\"%dp%[1-2][0-9][0-9][0-9]\\\\"') do (
- for /f "tokens=1-2 delims=/" %%a in ("%%~ti") do (
- setlocal
- if "%%b" leq "06" (
- call :1 "%%a\上半年" "%%i"
- ) else (
- call :1 "%%a\下半年" "%%i"
- )
- endlocal
- )
- )
- for /f "delims=" %%i in ('dir /b /s /ad ^|sort /r') do (
- rd "%%i" 2>nul
- )
- pause
- exit
-
- :1
- md "%~1" 2>nul
- if not exist "%~1\%~n2%m%%~x2" (
- move "%~2" "%~1\%~n2%m%%~x2"
- exit /b
- )
- set /a n+=1
- set m=_%n%
- goto :1
复制代码
作者: zhengzhenhui 时间: 2024-7-25 22:36
回复 10# 77七
谢谢你的提醒,也感谢你的帮助,我试过前后几种方法。先提取文件做同名处理,或者遍历所有文件做同名处理,再或者放入临时文件夹做同名处理,都是出错,原来是变量的问题
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |