Board logo

标题: 怎样有选择性的删除文件?谢谢! [打印本页]

作者: q1a2z3q1a2z3     时间: 2008-8-15 12:34    标题: 怎样有选择性的删除文件?谢谢!

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

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

谢谢!
作者: q1a2z3q1a2z3     时间: 2008-8-15 14:33
那位高手出现啊
作者: moniuming     时间: 2008-8-15 14:57
试试这个?
当测试成功后,确认删除,把"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

作者: q1a2z3q1a2z3     时间: 2008-8-15 15:58
多谢楼上了!


如果是删除c:\xx文件夹及子文件夹中除.jpg、clock.exe和desktop.ini外所有的文件?
作者: HAT     时间: 2008-8-15 16:13
if not "%%~xa"==".jpg"
你能看懂这句的话,跟着往后面加条件就是了。
作者: q1a2z3q1a2z3     时间: 2008-8-15 16:47
不知怎样加条件?

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

都不行。
作者: HAT     时间: 2008-8-15 16:51

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

作者: q1a2z3q1a2z3     时间: 2008-8-15 17:18
高手能不能把代码全部写全。自己试了一下语法不对
作者: HAT     时间: 2008-8-15 17:47
你是这样写的吗?
@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

作者: q1a2z3q1a2z3     时间: 2008-8-15 17:56
除了jpg文件外,还是删除了所有文件
作者: flyinspace     时间: 2008-8-15 18:00
好麻烦:

用非真集合啊。

for /f "tokens=* " %%i in ('dir /b /s ^| findstr /i /v /r ".jpg$ clock.exe$ dosktop.ini$"') do del /f /q "%%i"
作者: ThinKing     时间: 2008-8-15 18:02


  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"

注意转义万能字符哦。
作者: q1a2z3q1a2z3     时间: 2008-8-15 18:07
for /f "tokens=* " %%i in ('dir /b /s "c:\xx\*.*"'  ^| findstr /i /v /r ".jpg$ clock.exe$ dosktop.ini$"') do del /f /q "%%i"


提示找不到路径?
作者: HAT     时间: 2008-8-15 18:13    标题: 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

作者: flyinspace     时间: 2008-8-15 18:47


  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"


提示找不到路径?

仔细看了一下,原来是你语法错误。。
作者: yexingqi     时间: 2008-8-15 18:53
利害,学习中.....
作者: q1a2z3q1a2z3     时间: 2008-8-15 21:50
再次谢谢各位的帮忙了!

@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

经过验证,可行!

-------------------------------------------------------------------

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

只适用单个文件,如果包含子文件夹,会删除子文件夹中的所有文件
作者: flyinspace     时间: 2008-8-20 15:17
for /f "tokens=* " %%i in ('dir /b /s /a-d c:\xx\ ^| findstr /i /v /r ".jpg$ clock.exe$ dosktop.ini$"') do del /f /q "%%i"

排除了文件夹了