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

[文件操作] [已解决]批处理怎样删除单个文件?

文件夹中有很多文本文件,如:
Acer_davidii_I_Z72
Acer_davidii_I_Z73
Acer_fabri_I_Z88
Acer_fabri_I_Z89
Acer_fabri_I_Z91
Oxyria_digyna_K_W25
Oxyria_sinensis_K_D189
Oxyria_sinensis_K_W26
Oxyria_sinensis_K_W27
Paris_caobangensis_K_JYH78A
Paris_cronquistii_K_JYH86A
Paris_cronquistii_K_JYH86B
Paris_cronquistii_K_JYH86C
......
想求一批处理,删除:忽略第二个分隔符后所有字符文件名只出现一次的文件,结果如下:
Acer_davidii_I_Z72
Acer_davidii_I_Z73
Acer_fabri_I_Z88
Acer_fabri_I_Z89
Acer_fabri_I_Z91
Oxyria_sinensis_K_D189
Oxyria_sinensis_K_W26
Oxyria_sinensis_K_W27
Paris_cronquistii_K_JYH86A
Paris_cronquistii_K_JYH86B
Paris_cronquistii_K_JYH86C
......
再求一批处理,删除:忽略第三个分隔符后所有字符文件名只出现一次的文件
谢谢!
1

评分人数

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

本帖最后由 hanyeguxing 于 2011-4-2 14:42 编辑
  1. @echo off
  2. for /f "tokens=1,2* delims=_" %%a in ('dir /b/a-d *.txt') do if defined _"%%b" (set "_"%%b"==") else set "_"%%b"=%%a_%%b_%%c"
  3. for /f "tokens=1* delims==" %%a in ('set _') do if not "%%b"=="" del /f /a "%%b"
复制代码
要求:
1,完整文件名至少被_分隔成3段
2,文件名中不得有=等号
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

谢谢hanyeguxing,问题解决。

TOP

又有了新的要求,“删除:忽略第三个分隔符后所有字符文件名只出现一次的文件
”,还请继续指教,谢谢!

TOP

又有了新的要求,“删除:忽略第三个分隔符后所有字符文件名只出现一次的文件
”,还请继续指教,谢谢!
liht1024 发表于 2011-4-2 15:40
  1. @echo off
  2. SetLocal
  3. for /f "tokens=1-3,* delims=_" %%a in (' dir /a:-d /b *_*_* ') do (
  4.     if defined ?%%c (set ?%%c=?) else set ?%%c=?%%a_%%b_%%c_%%d
  5. )
  6. for /f "tokens=2 delims=?" %%a in (' set ? ') do (
  7.     if "%%a" neq "" del /a /f "%%a"
  8. )
复制代码

TOP

谢谢tmplinshi !

TOP

返回列表