无忧启动论坛

标题: 请大家帮个忙 [打印本页]

作者: hyt3d    时间: 2011-12-28 08:13
标题: 请大家帮个忙
如何删除一些指定文件名长度的文件 (也就是保留某些文件名长度的文件),通配符?我试过一些 比如删除文件名长度为3和5以上,只保留长度为4的文件
作者: pznpt    时间: 2011-12-28 13:50
删除文件名长度5字节以上(含5字节,不包括扩展名)的文件:
@echo off
setlocal enabledelayedexpansion
set n=0
for /f "delims=" %%a in ('dir /a-d /b /s *.*') do (
  set str=%%~na
  if not "!str:~4!"=="" del /q /f "%%a">nul&set/a n+=1
)
echo.&echo 共计删除!n!个
pause

删除文件名长度3字节以下(含3字节,不包括扩展名)的文件:
@echo off
setlocal enabledelayedexpansion
set n=0
for /f "delims=" %%a in ('dir /a-d /b /s *.*') do (
  set str=%%~na
  if "!str:~3!"=="" del /q /f "%%a">nul&set/a n+=1
)
echo.&echo 共计删除!n!个
pause

剩余就是4字节的了。删错了莫怪。可以先将del %%a>nul 改成 echo %%a 试一试有没有问题。

[ 本帖最后由 pznpt 于 2011-12-28 15:25 编辑 ]
作者: hyt3d    时间: 2011-12-28 16:10
多谢这个批可以删除指定的文件,但还要加多一点:就是要指定文件夹,不是指定的文件夹不执行,避免误删错其它文件
作者: pznpt    时间: 2011-12-28 16:52
那就把*.*指定一下就可以啦(如改成 D:\ABC\*.*)。
2楼默认删除的是批处理自身所在的目录下的文件,有可能将自身也删了,呵呵。。。
作者: x9tian    时间: 2011-12-29 23:41
标题: 基础呀!基础
通配符 不是只有 *   还有 ?  findstr命令还有  .  也是通配作用!




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3