大佬们,我是一个新手小白,我很努力的在网上搜索代码和内容。
但是还有一些不懂,求教。
小女子我会努力把事情说清楚。
在这里谢谢各位大佬!
我有这样一些文件。
这是第一级目录
里面有很多个文件夹,命名是按照“日期+事件”命名。(+是为了看清楚,实际没有+这个符号)
第二级目录是
“日期+事件”命名的文件夹里有很多命名为“编号+名字”的文件夹(+是为了看清楚,实际没有+这个符号)
第三级目录是
“编号+名字”的文件夹里有不止一张“随机数字”命名的图片.jpg(+是为了看清楚,实际没有+这个符号)
我想要把每个子文件夹里的.jpg图片,命名为“编号+名字+日期+事件+升序数字(例如1,2,3)”(+是为了看清楚,实际没有+这个符号)
然后全部提取到制定的文件夹。例如D:\test\all\
我想的逻辑是,
1.先重命名第二级目录所有文件夹的名字,把第一级目录“日期+事件”批量添加到第二级文件夹“编号+名字”的后面。
2.把文件夹里所有的图片重命名1到N升序数字,N不超过10。(图片名字就是1.jpg,2.jpg,3.jpg类似这样)
3.把第二级目录文件夹的名字“编号+名字+日期+事件”,添加到图片名字中,变成前缀。(图片名字就是编号+名字+日期+事件1.jpg,编号+名字+日期+事件1.jpg)(+是为了看清楚,实际没有+这个符号)
4.把所有这些重命名过的文件都移动到指定文件夹里。例如D:\test\all\
我想的挺麻烦的,我知道大神们肯定有更好的办法。求教!
我已经弄出来的。
把第二级目录里的“编号+名字”的文件夹放到指定E:\test\下,然后运行,可以把文件夹里的.jpg图片按照“文件夹名字”+升序数字(例如1,2,3)重命名。(+是为了看清楚,实际没有+这个符号)- @echo off
- setlocal enabledelayedexpansion
- set "lj=E:\test\"这个是必须把文件夹们放到指定目录下,能不能不指定
- for /f "delims=" %%a in ('dir /ad /b "%lj%"') do (
- set n=0
- for /f "delims=" %%b in ('dir /a-d /b "%lj%%%a\*.jpg"') do (
- set /a n+=1
- if !抄n! lss 10 (
- ren "%lj%%%a\%%b" "%%a0!n!.jpg"
- ) else (
- ren "%lj%%%a\%%b" "%%a!n!.jpg"
- )
- )
- )
- pause
复制代码 其他的我就不太会了。
求大佬指教,
或者帮忙码字。
小女子感激不尽。 |