标题: [文件操作] [已解决]批处理怎样删除单个文件? [打印本页]
作者: liht1024 时间: 2011-4-2 14:07 标题: [已解决]批处理怎样删除单个文件?
文件夹中有很多文本文件,如:
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
......
再求一批处理,删除:忽略第三个分隔符后所有字符文件名只出现一次的文件
谢谢!
作者: hanyeguxing 时间: 2011-4-2 14:39
本帖最后由 hanyeguxing 于 2011-4-2 14:42 编辑
- @echo off
- 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"
- for /f "tokens=1* delims==" %%a in ('set _') do if not "%%b"=="" del /f /a "%%b"
复制代码
要求:
1,完整文件名至少被_分隔成3段
2,文件名中不得有=等号
作者: liht1024 时间: 2011-4-2 15:08
谢谢hanyeguxing,问题解决。
作者: liht1024 时间: 2011-4-2 15:40
又有了新的要求,“删除:忽略第三个分隔符后所有字符文件名只出现一次的文件
”,还请继续指教,谢谢!
作者: tmplinshi 时间: 2011-4-2 16:55
又有了新的要求,“删除:忽略第三个分隔符后所有字符文件名只出现一次的文件
”,还请继续指教,谢谢!
liht1024 发表于 2011-4-2 15:40
- @echo off
- SetLocal
- for /f "tokens=1-3,* delims=_" %%a in (' dir /a:-d /b *_*_* ') do (
- if defined ?%%c (set ?%%c=?) else set ?%%c=?%%a_%%b_%%c_%%d
- )
- for /f "tokens=2 delims=?" %%a in (' set ? ') do (
- if "%%a" neq "" del /a /f "%%a"
- )
复制代码
作者: liht1024 时间: 2011-4-2 17:16
谢谢tmplinshi !
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |