标题: [文件操作] 【已解决】批处理如何根据文件夹关键词分类图片 [打印本页]
作者: 小吴 时间: 2022-4-9 15:28 标题: 【已解决】批处理如何根据文件夹关键词分类图片
本帖最后由 小吴 于 2022-4-10 20:27 编辑
做图
-套装
--778
--779
--776
-睡裙
--888
--999
--881
-778主图1.jpg
-779主图1.jpg
-776主图1.jpg
-888主图1.jpg
-999主图1.jpg
-881主图1.jpg
效果
做图
-套装
--778
---778主图1.jpg
--779
---779主图1.jpg
--776
---776主图1.jpg
-睡裙
--888
---888主图1.jpg
--999
---999主图1.jpg
--881
---881主图1.jpg
谢谢老师
作者: Batcher 时间: 2022-4-9 16:37
回复 1# 小吴
请使用下面的 tree 命令生成真实的目录结构然后发出来看看
tree /f "D:\你自己的真实路径\做图" > 1.txt
如需上传截图,请用图床:
http://bbs.bathome.net/thread-60985-1-1.html
如需上传附件,请用阿里云盘或百度网盘。
作者: 小吴 时间: 2022-4-9 17:01
回复 2# Batcher
图片链接:http://qr61.cn/oaCdYX/qYNG7ob
作者: Batcher 时间: 2022-4-9 17:08
回复 3# 小吴
你这个截图跟顶楼的描述完全不一样啊。比如“501竖图”应该移动到哪里去?规律是啥?
作者: 小吴 时间: 2022-4-9 21:55
回复 4# Batcher
做图(一级文件夹)
-套装(二级文件夹)
--778(三级文件夹)
--779(三级文件夹)
--776(三级文件夹)
-睡裙
--888(三级文件夹)
--999(三级文件夹)
--881(三级文件夹)
-778主图1.jpg(二级文件)
-779主图1.jpg(二级文件)
-776主图1.jpg(二级文件)
-888主图1.jpg(二级文件)
-999主图1.jpg(二级文件)
-881主图1.jpg(二级文件)
效果
做图(一级文件)
-套装(二级文件)
--778(三级文件)
---778主图1.jpg
--779(三级文件)
---779主图1.jpg
--776(三级文件)
---776主图1.jpg
-睡裙(二级文件)
--888(三级文件)
---888主图1.jpg
--999(三级文件)
---999主图1.jpg
--881(三级文件)
---881主图1.jpg
把二级文件夹的*.jpg的文件按照文件名称移动到相应的三级文件夹里面
作者: Batcher 时间: 2022-4-9 22:37
回复 5# 小吴
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA- @echo off
- cd /d "%~dp0"
- for /f "delims=" %%i in ('dir /b /ad') do (
- echo 正在处理二级文件夹:%%i
- pushd "%%i"
- for /f "delims=" %%j in ('dir /b /ad') do (
- echo 三级文件夹:%%j
- move "*%%j*.jpg" "%%j"
- )
- popd
- )
复制代码
作者: qixiaobin0715 时间: 2022-4-10 08:42
回复 6# Batcher
pushd "%%i"后,第5行代码是否应当修改为:- move "..\*%%j*.jpg" "%%j"
复制代码
作者: qixiaobin0715 时间: 2022-4-10 09:00
我觉得还是不妥,如果图片中有一个是:873竖图.jpg,并且又存在若干8731竖图.jpg,8732竖图.jpg...等图片,就会有问题。
作者: Batcher 时间: 2022-4-10 09:16
回复 8# qixiaobin0715
等等看楼主的测试结果吧,给的例子像是瞎编的,不知道真实数据的规律是怎样的
作者: qixiaobin0715 时间: 2022-4-10 09:37
是的,楼主提供的信息还是不典型。
借用Batcher代码我觉得可以这样:- @echo off
- set KeyWords=主图 全景照片
- for %%a in (%KeyWords%) do (
- for /f "delims=" %%i in ('dir /b /ad') do (
- pushd "%%i"
- for /f "delims=" %%j in ('dir /b /ad') do (
- move "..\*%%j%%a*.jpg" "%%j"
- )
- popd
- )
- )
复制代码
注意事项:
1.图片名称最好都是规则命名:数字+通用词汇(“xxx图”或“xxx照片”等)+xxx.jpg
2.如果一级文件夹下的图片名称中含有“主图、竖图、全景照片”等多个通用词汇,请自行修改代码第2行变量值,各通用词汇之间用空格分开。如果只有一个通用词汇,就只保留一个。
作者: qixiaobin0715 时间: 2022-4-10 09:55
本帖最后由 qixiaobin0715 于 2022-4-10 10:32 编辑
发上去了就感觉上面代码还是有问题,应当把最外层的for循环放在最内层好一些。- @echo off
- set KeyWords=主图 全景照片
- for /f "delims=" %%i in ('dir /b /ad') do (
- pushd "%%i"
- for /f "delims=" %%j in ('dir /b /ad') do (
- for %%a in (%KeyWords%) do move "..\%%j%%a*.jpg" "%%j">nul
- )
- popd
- )
- pause
复制代码
作者: 小吴 时间: 2022-4-10 13:07
回复 11# qixiaobin0715
这个可以谢谢,
作者: 小吴 时间: 2022-4-10 13:08
回复 6# Batcher
好的,感谢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |