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

[文件操作] 【已解决】批处理如何根据文件夹关键词分类图片

[复制链接]
发表于 2022-4-9 15:28:00 | 显示全部楼层 |阅读模式
本帖最后由 小吴 于 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
谢谢老师
发表于 2022-4-9 16:37:46 | 显示全部楼层
回复 1# 小吴


请使用下面的 tree 命令生成真实的目录结构然后发出来看看
tree /f "D:\你自己的真实路径\做图" > 1.txt

如需上传截图,请用图床:
http://bbs.bathome.net/thread-60985-1-1.html

如需上传附件,请用阿里云盘或百度网盘。
 楼主| 发表于 2022-4-9 17:01:43 | 显示全部楼层
回复 2# Batcher


    图片链接:http://qr61.cn/oaCdYX/qYNG7ob
发表于 2022-4-9 17:08:28 | 显示全部楼层
回复 3# 小吴


    你这个截图跟顶楼的描述完全不一样啊。比如“501竖图”应该移动到哪里去?规律是啥?
 楼主| 发表于 2022-4-9 21:55:35 | 显示全部楼层
回复 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的文件按照文件名称移动到相应的三级文件夹里面
发表于 2022-4-9 22:37:02 | 显示全部楼层
回复 5# 小吴


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /ad') do (
  4.     echo 正在处理二级文件夹:%%i
  5.     pushd "%%i"
  6.     for /f "delims=" %%j in ('dir /b /ad') do (
  7.         echo 三级文件夹:%%j
  8.         move "*%%j*.jpg" "%%j"
  9.     )
  10.     popd
  11. )
复制代码
发表于 2022-4-10 08:42:14 | 显示全部楼层
回复 6# Batcher
pushd "%%i"后,第5行代码是否应当修改为:
  1. move "..\*%%j*.jpg" "%%j"
复制代码
发表于 2022-4-10 09:00:40 | 显示全部楼层
我觉得还是不妥,如果图片中有一个是:873竖图.jpg,并且又存在若干8731竖图.jpg,8732竖图.jpg...等图片,就会有问题。
发表于 2022-4-10 09:16:47 | 显示全部楼层
回复 8# qixiaobin0715


    等等看楼主的测试结果吧,给的例子像是瞎编的,不知道真实数据的规律是怎样的
发表于 2022-4-10 09:37:51 | 显示全部楼层
是的,楼主提供的信息还是不典型。
借用Batcher代码我觉得可以这样:
  1. @echo off
  2. set KeyWords=主图 全景照片
  3. for %%a in (%KeyWords%) do (
  4.     for /f "delims=" %%i in ('dir /b /ad') do (
  5.         pushd "%%i"
  6.         for /f "delims=" %%j in ('dir /b /ad') do (
  7.             move "..\*%%j%%a*.jpg" "%%j"
  8.         )
  9.         popd
  10.     )
  11. )
复制代码
注意事项:
1.图片名称最好都是规则命名:数字+通用词汇(“xxx图”或“xxx照片”等)+xxx.jpg
2.如果一级文件夹下的图片名称中含有“主图、竖图、全景照片”等多个通用词汇,请自行修改代码第2行变量值,各通用词汇之间用空格分开。如果只有一个通用词汇,就只保留一个。
发表于 2022-4-10 09:55:00 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-4-10 10:32 编辑

发上去了就感觉上面代码还是有问题,应当把最外层的for循环放在最内层好一些。
  1. @echo off
  2. set KeyWords=主图 全景照片
  3. for /f "delims=" %%i in ('dir /b /ad') do (
  4.     pushd "%%i"
  5.     for /f "delims=" %%j in ('dir /b /ad') do (
  6.         for %%a in (%KeyWords%) do move "..\%%j%%a*.jpg" "%%j">nul
  7.     )
  8.     popd
  9. )
  10. pause
复制代码
 楼主| 发表于 2022-4-10 13:07:49 | 显示全部楼层
回复 11# qixiaobin0715


    这个可以谢谢,
 楼主| 发表于 2022-4-10 13:08:04 | 显示全部楼层
回复 6# Batcher

好的,感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 05:51 , Processed in 0.020966 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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