[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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(不处理)
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 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 的代码。

TOP

  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

评分人数

TOP

回复 3# cobat

只能处理jpg格式,png、gif格式无法使用
前面的字母数字存在_等特殊符号时无法处理

TOP

本帖最后由 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

评分人数

TOP

回复 1# honghong33
问题得到解答以后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html

TOP

返回列表