Board logo

标题: [文件操作] [已解决]批处理如何根据图片名称删除指定文件? [打印本页]

作者: honghong33    时间: 2015-3-6 23:00     标题: [已解决]批处理如何根据图片名称删除指定文件?

本帖最后由 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(不处理)
作者: tmplinshi    时间: 2015-3-7 00:04

本帖最后由 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 的代码。
作者: cobat    时间: 2015-3-7 00:09

  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
复制代码

作者: honghong33    时间: 2015-3-7 17:26

回复 3# cobat

只能处理jpg格式,png、gif格式无法使用
前面的字母数字存在_等特殊符号时无法处理
作者: cobat    时间: 2015-3-7 18:06

本帖最后由 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
复制代码

作者: pcl_test    时间: 2015-3-14 20:53

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2