中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 13:40
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎样有选择性的删除文件?谢谢! 查看 2,313 回复 17
楼 主 怎样有选择性的删除文件?谢谢! 发表于 2008-08-15 12:34 ·  中国 江苏 苏州 电信
初级用户
积分 88
发帖 41
注册 2006-05-13 21:57
20年会员
UID 55479
状态 离线
1、例如删除c:\xx文件夹及子文件夹中除.jpg外所有的文件

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

谢谢!
2 发表于 2008-08-15 14:33 ·  中国 江苏 苏州 电信
初级用户
积分 88
发帖 41
注册 2006-05-13 21:57
20年会员
UID 55479
状态 离线
那位高手出现啊
3 发表于 2008-08-15 14:57 ·  中国 上海 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
试试这个?
当测试成功后,确认删除,把"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
4 发表于 2008-08-15 15:58 ·  中国 江苏 苏州 电信
初级用户
积分 88
发帖 41
注册 2006-05-13 21:57
20年会员
UID 55479
状态 离线
多谢楼上了!


如果是删除c:\xx文件夹及子文件夹中除.jpg、clock.exe和desktop.ini外所有的文件?
5 发表于 2008-08-15 16:13 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
if not "%%~xa"==".jpg"
你能看懂这句的话,跟着往后面加条件就是了。
6 发表于 2008-08-15 16:47 ·  中国 江苏 苏州 电信
初级用户
积分 88
发帖 41
注册 2006-05-13 21:57
20年会员
UID 55479
状态 离线
不知怎样加条件?

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

都不行。
7 发表于 2008-08-15 16:51 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
if not "%%~xa"==".jpg" (
if not "%%a"=="clock.exe" (
if not "%%a"=="desktop.ini" (
echo del "%%a"
)
)
)
8 发表于 2008-08-15 17:18 ·  中国 江苏 苏州 电信
初级用户
积分 88
发帖 41
注册 2006-05-13 21:57
20年会员
UID 55479
状态 离线
高手能不能把代码全部写全。自己试了一下语法不对
9 发表于 2008-08-15 17:47 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
你是这样写的吗?
@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
10 发表于 2008-08-15 17:56 ·  中国 江苏 苏州 电信
初级用户
积分 88
发帖 41
注册 2006-05-13 21:57
20年会员
UID 55479
状态 离线
除了jpg文件外,还是删除了所有文件
11 发表于 2008-08-15 18:00 ·  中国 广东 广州 番禺区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
好麻烦:

用非真集合啊。

for /f "tokens=* " %%i in ('dir /b /s ^| findstr /i /v /r ".jpg$ clock.exe$ dosktop.ini$"') do del /f /q "%%i"
知,不觉多。不知,乃求知
12 发表于 2008-08-15 18:02 ·  中国 湖北 武汉 电信
中级用户
★★
积分 471
发帖 207
注册 2007-05-03 14:53
19年会员
UID 87369
性别 男
状态 离线
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"

注意转义万能字符哦。
13 发表于 2008-08-15 18:07 ·  中国 江苏 苏州 电信
初级用户
积分 88
发帖 41
注册 2006-05-13 21:57
20年会员
UID 55479
状态 离线
for /f "tokens=* " %%i in ('dir /b /s "c:\xx\*.*"' ^| findstr /i /v /r ".jpg$ clock.exe$ dosktop.ini$"') do del /f /q "%%i"


提示找不到路径?
14 Re 10楼 发表于 2008-08-15 18:13 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
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
15 发表于 2008-08-15 18:47 ·  中国 广东 广州 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
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"


提示找不到路径?


仔细看了一下,原来是你语法错误。。
知,不觉多。不知,乃求知
论坛跳转: