中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎样有选择性的删除文件?谢谢!
« [1] [2] »
作者:
标题: 怎样有选择性的删除文件?谢谢! 上一主题 | 下一主题
q1a2z3q1a2z3
初级用户





积分 88
发帖 41
注册 2006-5-13
状态 离线
『楼 主』:  怎样有选择性的删除文件?谢谢!

1、例如删除c:\xx文件夹及子文件夹中除.jpg外所有的文件

2、删除体积小于xx大小和尺寸小于xx的图片

谢谢!

2008-8-15 12:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
q1a2z3q1a2z3
初级用户





积分 88
发帖 41
注册 2006-5-13
状态 离线
『第 2 楼』:  

那位高手出现啊

2008-8-15 14:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 3 楼』:  

试试这个?
当测试成功后,确认删除,把"echo"去掉,例子中为删除小于100K的jpg文件.
尺寸无法获得.
@echo off
for /f "delims=" %%a in ('dir /s/b/a-d "c:\xx\*.*"') do (
   if not "%%a"=="%~0" (if not "%%~xa"==".jpg" echo del "%%a")
)
for /f "delims=" %%a in ('dir /s/b/a-d "c:\xx\*.jpg"') do (
   if not %%~za gtr 100000 (echo del "%%a")
)
echo del %0
pause


2008-8-15 14:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
q1a2z3q1a2z3
初级用户





积分 88
发帖 41
注册 2006-5-13
状态 离线
『第 4 楼』:  

多谢楼上了!


如果是删除c:\xx文件夹及子文件夹中除.jpg、clock.exe和desktop.ini外所有的文件?

2008-8-15 15:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  

if not "%%~xa"==".jpg"
你能看懂这句的话,跟着往后面加条件就是了。



2008-8-15 16:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
q1a2z3q1a2z3
初级用户





积分 88
发帖 41
注册 2006-5-13
状态 离线
『第 6 楼』:  

不知怎样加条件?

      if not "%%~xa"==".jpg .gif"
还是if not "%%~xa"==".jpg & .gif"

都不行。

2008-8-15 16:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 7 楼』:  


if not "%%~xa"==".jpg" (
  if not "%%a"=="clock.exe" (
    if not "%%a"=="desktop.ini" (
      echo del "%%a"
    )
  )
)




2008-8-15 16:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
q1a2z3q1a2z3
初级用户





积分 88
发帖 41
注册 2006-5-13
状态 离线
『第 8 楼』:  

高手能不能把代码全部写全。自己试了一下语法不对

2008-8-15 17:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 9 楼』:  

你是这样写的吗?
@echo off
for /f "delims=" %%a in ('dir /s/b/a-d "c:\xx\*.*"') do (
  if not "%%a"=="%~0" (
    if not "%%~xa"==".jpg" (
      if not "%%a"=="clock.exe" (
        if not "%%a"=="desktop.ini" (
          echo del "%%a"
        )
      )
    )
  )
)
for /f "delims=" %%a in ('dir /s/b/a-d "c:\xx\*.jpg"') do (
  if not %%~za gtr 100000 (echo del "%%a")
)
echo del %0
pause




2008-8-15 17:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
q1a2z3q1a2z3
初级用户





积分 88
发帖 41
注册 2006-5-13
状态 离线
『第 10 楼』:  

除了jpg文件外,还是删除了所有文件

2008-8-15 17:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 11 楼』:  

好麻烦:

用非真集合啊。

for /f "tokens=* " %%i in ('dir /b /s ^| findstr /i /v /r ".jpg$ clock.exe$ dosktop.ini$"') do del /f /q "%%i"



知,不觉多。不知,乃求知
2008-8-15 18:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ThinKing
中级用户





积分 471
发帖 207
注册 2007-5-3
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by flyinspace at 2008-8-15 06:00 PM:
好麻烦:

用非真集合啊。

for /f "tokens=* " %%i in ('dir /b /s ^| findstr /i /v /r ".jpg$ clock.exe$ dosktop.ini$"') do del /f /q "%%i"

注意转义万能字符哦。

2008-8-15 18:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
q1a2z3q1a2z3
初级用户





积分 88
发帖 41
注册 2006-5-13
状态 离线
『第 13 楼』:  

for /f "tokens=* " %%i in ('dir /b /s "c:\xx\*.*"'  ^| findstr /i /v /r ".jpg$ clock.exe$ dosktop.ini$"') do del /f /q "%%i"


提示找不到路径?

2008-8-15 18:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 14 楼』:  Re 10楼

dir /s /b得到的是全路径,自己修改一下就行了。
@echo off
for /f "delims=" %%a in ('dir /s/b/a-d "c:\xx\*.*"') do (
  if not "%%~nxa"=="%~0" (
    if not "%%~xa"==".jpg" (
      if not "%%~nxa"=="clock.exe" (
        if not "%%~nxa"=="desktop.ini" (
          echo del "%%a"
        )
      )
    )
  )
)
for /f "delims=" %%a in ('dir /s/b/a-d "c:\xx\*.jpg"') do (
  if not %%~za gtr 100000 (echo del "%%a")
)
echo del %0
pause




2008-8-15 18:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by q1a2z3q1a2z3 at 2008-8-15 06:07 PM:
for /f "tokens=* " %%i in ('dir /b /s "c:\xx\*.*"' ^| findstr /i /v /r ".jpg$ clock.exe$ dosktop.ini$"') do del /f /q "%%i"


提示找不到路径?

仔细看了一下,原来是你语法错误。。



知,不觉多。不知,乃求知
2008-8-15 18:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: