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

[文件操作] [已解决]批处理如何根据图片名称删除指定文件?

[复制链接]
发表于 2015-3-6 23:00:52 | 显示全部楼层 |阅读模式
本帖最后由 honghong33 于 2015-3-14 20:57 编辑

我有一些图片,命名规则是一串字母数字加_400、_500或_1280。
我需要做的是,如果前面的字母数字相同的话,比较后缀是_400和_500删除_400
是_500和_1280删除_500
是_400、_500、_1280删除_400、和_500
不存字母数字相同的不处理。

比如:

xksED1s9oda_400(删除)
xksED1s9oda_500

21qlyxfpo1_1280
21qlyxfpo1_500(删除)

mxu3cpaLoK1rz_400(删除)
mxu3cpaLoK1rz_1280

w5VHVc_400(删除)
w5VHVc_500(删除)
w5VHVc_1280、

vx9b4vfs21saujx6o_500(不处理)
oloeCCz1rajzayo_1280(不处理)

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-3-7 00:04:58 | 显示全部楼层
本帖最后由 tmplinshi 于 2015-3-7 00:28 编辑
  1. @echo off
  2. SetLocal EnableDelayedExpansion

  3. cd /d "C:\Users\Administrator\Desktop\新建文件夹" || (pause & exit /b)

  4. for /f "delims=" %%i in ('dir /a:-d /b *_*.jpg') do (
  5.         set list=
  6.         for /f "delims=_" %%a in ("%%i") do (
  7.                 for %%n in (400 500 1280) do (
  8.                         if exist "%%a_%%n%%~xi" (set list=!list! %%n)
  9.                 )
  10.                 for /f "tokens=1-3" %%1 in ("!list!") do (
  11.                         if "%%3" neq "" (del "%%a_%%2%%~xi")
  12.                         if "%%2" neq "" (del "%%a_%%1%%~xi")
  13.                 )
  14.         )
  15. )
复制代码
推荐用楼下 cobat 的代码。
发表于 2015-3-7 00:09:43 | 显示全部楼层
  1. @echo off 2>nul 3>nul
  2. for /f "delims=_" %%a in ('dir /a-d /b *_1280.jpg') do del %%a_500.jpg %%a_400.jpg
  3. for /f "delims=_" %%a in ('dir /a-d /b *_500.jpg') do del %%a_400.jpg
  4. pause
复制代码

评分

参与人数 2技术 +2 收起 理由
pcl_test + 1 这个思路好
tmplinshi + 1 好!

查看全部评分

 楼主| 发表于 2015-3-7 17:26:31 | 显示全部楼层
回复 3# cobat

只能处理jpg格式,png、gif格式无法使用
前面的字母数字存在_等特殊符号时无法处理
发表于 2015-3-7 18:06:38 | 显示全部楼层
本帖最后由 cobat 于 2015-3-7 18:50 编辑

回复 4# honghong33
  1. @echo off 2>nul 3>nul
  2. for /f "delims=" %%a in ('dir /a-d /b') do (
  3.     set a=%%a
  4.     setlocal enabledelayedexpansion
  5.     if "!a:~-9,6!" == "_1280." del "!a:_1280.=_500.!" "!a:_1280.=_400.!"
  6.     if "!a:~-8,5!" == "_500." del "!a:_500.=_400.!"
  7.     endlocal
  8. )
  9. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
honghong33 + 1 感谢

查看全部评分

发表于 2015-3-14 20:53:35 | 显示全部楼层
回复 1# honghong33
问题得到解答以后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 14:12 , Processed in 0.023793 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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