中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-03 21:46
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 排除删除和对比删除 欢迎测试和完善
可打印版本  5,424 / 17
第1楼 a9319751 发表于 2006-12-10 01:24
中级用户 发帖 170 积分 439
排除删除和对比删除 欢迎测试和完善
排除删除



对比删除


[ Last edited by a9319751 on 2006-12-13 at 08:23 AM ]
第2楼 lxmxn 发表于 2006-12-10 01:46
版主 发帖 4,938 积分 11,386

  显得好乱……
第3楼 a9319751 发表于 2006-12-10 01:52
中级用户 发帖 170 积分 439
恩,能不能简化下啊,老兄
第4楼 lxmxn 发表于 2006-12-10 02:05
版主 发帖 4,938 积分 11,386

第5楼 a9319751 发表于 2006-12-10 02:14
中级用户 发帖 170 积分 439
Originally posted by lxmxn at 2006-12-10 02:05:

第6楼 a9319751 发表于 2006-12-10 02:51
中级用户 发帖 170 积分 439
修改了下




<>|前面^别的还有吗?
第7楼 namejm 发表于 2006-12-10 03:05
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  删除文件前不必先去文件属性,直接用 del /a /f 强制删除任意属性的文件就可以了。
第8楼 a9319751 发表于 2006-12-10 03:10
中级用户 发帖 170 积分 439
Originally posted by namejm at 2006-12-10 03:05:
  删除文件前不必先去文件属性,直接用 del /a /f 强制删除任意属性的文件就可以了。


第9楼 lxmxn 发表于 2006-12-10 08:16
版主 发帖 4,938 积分 11,386


请教下兄 ^一般什么时间才用啊?

另外你的脚本我测试了,
如果排除文件有空格不能完成删除

  对于何时需要使用^符号:
    这个"^"符号可以说是批处理的转义字符,可以将一些批处理里面的特殊的字符转换成其字符本身,有点类似c语言里面的转义符"\"。比如要在命令回显&^|等特殊字符时,必须在前面加上^符号,用来将其后的字符转义为本身。在带有/f参数的 for命令里面,括号里面的命令如果用到了管道字符,比如 | > << >> 等字符时,比如在这些符号前面加上转义符号^来转义。

  对于不能删除带有空格的文件,可以将空格用.(西文的句号)来代替。我刚做了一个实验,在一个文件夹下建立了如下一些文件:

2006-12-09 19:08 <DIR> .
2006-12-09 19:08 <DIR> ..
2006-12-09 19:08 22 1 # 1.txt
2006-12-09 19:08 22 11 # 11.txt
2006-12-09 19:08 22 13 # 13.txt
2006-12-09 19:08 22 15 # 15.txt
2006-12-09 19:08 22 17 # 17.txt
2006-12-09 19:08 22 19 # 19.txt
2006-12-09 19:08 22 3 # 3.txt
2006-12-09 19:08 22 5 # 5.txt
2006-12-09 19:08 22 7 # 7.txt
2006-12-09 19:08 22 9 # 9.txt

  比如我想保留"9 # 9.txt"和"19 # 19.txt",而将其它的文件都删除,那么可以使用下面的代码:

  值得注意的是:执行任务的批处理文件最好不要放在当前目录,可能会被删除。另外,findstr后面的两个文件中间有一个空格,如果没有,可能会将目录里面的所有文件删除。
第10楼 a9319751 发表于 2006-12-11 02:55
中级用户 发帖 170 积分 439
不错,谢谢了,比我写的好看多了


for /f "delims=" %%i in ('dir /b/ad e:\ ^|findstr /i /V "\<19.#.19.txt\> \<9.#.9.txt\>"') do attrib -s -h -r -a /s /d "%%i" && rd /s /q "%%i"
for /f "delims=" %%i in ('dir /b/a-d e:\ ^|findstr /i /V "\<新建.文本文档.bat\> \<9.#.9.txt\>"') do del /a /f /q "%%i"
pause


打算些个生成这个文件的P

[ Last edited by a9319751 on 2006-12-11 at 03:31 AM ]
第11楼 a9319751 发表于 2006-12-12 05:44
中级用户 发帖 170 积分 439
to lxmxn

9楼的代码 和10楼的代码都不能完美处理

新建 文本文档.txt
新建1文本文档.txt
新建2文本文档.txt
(1)新建 文本文档.txt
新建 文本文档.txt
新建 文本文档 (2).txt
等等问题
我又重写了代码,顶楼已更新,欢迎指导
顶楼的已可以正确判断这些

[ Last edited by a9319751 on 2006-12-13 at 08:08 AM ]
第12楼 a9319751 发表于 2006-12-13 07:17
中级用户 发帖 170 积分 439
有帮忙测试的没
第13楼 lxmxn 发表于 2006-12-13 07:56
版主 发帖 4,938 积分 11,386

  哪里来的19,20楼?

  你不要把以前的内容删除了啊,这样就不要分析了。

  等会儿帮你测试。
第14楼 a9319751 发表于 2006-12-13 08:09
中级用户 发帖 170 积分 439
不好意思,是我写错了,是9和10楼,嘿嘿
我不是版主杂会删贴呢
不好意思

[ Last edited by a9319751 on 2006-12-13 at 08:19 AM ]
第15楼 lrbf810 发表于 2007-01-11 10:01
新手上路 发帖 5 积分 10
COPY了,等下研究了再回来请教.
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023