标题: [其他] [已解决]批处理删除文件时怎么排除已知文件名的文件? [打印本页]
作者: huangu125 时间: 2009-7-25 11:45 标题: [已解决]批处理删除文件时怎么排除已知文件名的文件?
比如我现在要清空D盘文件,但有几个文件是不删除的,这些文件都是已经知道文件名的。
怎么用批处理删其他文件,而又排除不需要删的文件。
感谢KEEN的回复。你太棒了!!
[ 本帖最后由 huangu125 于 2009-7-25 17:01 编辑 ]
作者: keen 时间: 2009-7-25 14:03 标题: 回复 1楼 的帖子
假设要保留的文件名字为1.txt 和 2 3.txt.注:文件名中有空格一定要用双引号把文件名括起来.- @echo off
- set str="%~nx0" "1.txt" "2 3.txt"
- for %%i in (%str%) do set %%~i=a
- for /r d:\ %%i in (*) do (
- if not defined %%~nxi echo del "%%i"
- )
- pause
复制代码
%~nx0代表这个批处理本身.
请先试用这个批处理,要确定开始删除,请把del前面的echo去掉.
作者: huangu125 时间: 2009-7-25 16:11
原帖由 keen 于 2009-7-25 14:03 发表
假设要保留的文件名字为1.txt 和 2 3.txt.注:文件名中有空格一定要用双引号把文件名括起来.@echo off
set str="%~nx0" "1.txt" "2 3.txt"
for %%i in (%str%) do set %%~i=a
for /r d:\ %%i in (*) do (
if ...
我试过了,可以用,非常感谢你!
还有一些小问题问你下。
for /r d:\ %%i in (*) do ( 这句的 d:\ 是控制目录的吧,是不是把这个改为其他目录,比如:C:\WINDOWS\Web\Wallpaper 其他地方就不会删除了,
这个很重要,因为电脑还有一些其他重要文件,万一删了,就挂了。
还有就是被排除的文件,为什么不能排成像这样的,
"1.jpg"
"2.jpg"
"3.jpg"
........
要是这样写就是打开文件了,因为文件比较多,要用复制列表来写这个批处理如果每个一都要像:
"1.jpg" "2.jpg" "3.jpg" 这样一行来写就会有很大工作量。
作者: keen 时间: 2009-7-25 16:17 标题: 回复 3楼 的帖子
对,d:\是控制目录.如果怕删除错,可以先在 del前添加echo .
也可以排成
"1.jpg"
"2.jpg"
"3.jpg"
........
不过这种形式,最好写在一个文本中,然后由批处理读取.
作者: huangu125 时间: 2009-7-25 16:27
原帖由 keen 于 2009-7-25 16:17 发表
对,d:\是控制目录.如果怕删除错,可以先在 del前添加echo .
也可以排成
"1.jpg"
"2.jpg"
"3.jpg"
........
不过这种形式,最好写在一个文本中,然后由批处理读取.
我试了几次,换行的那种排列,不可以用,是打开被排除的文件了。
如果用批处理读取该怎么操作啊。那个文本格式应该怎么写?
谢谢你,我是新手,请原谅哈。
作者: keen 时间: 2009-7-25 16:38 标题: 回复 5楼 的帖子
在a.txt文本中是要保留的文件名字.一行一个,例如:复制代码
- @echo off
- for /f "delims=" %%i in (a.txt) do set %%~i=a
- for /r d:\ %%i in (*) do (
- if not defined %%~nxi echo del "%%i"
- )
- pause
复制代码
作者: huangu125 时间: 2009-7-25 17:00
原帖由 keen 于 2009-7-25 16:38 发表
在a.txt文本中是要保留的文件名字.一行一个,例如:1.txt
2.txt
3 5.txt@echo off
for /f "delims=" %%i in (a.txt) do set %%~i=a
for /r d:\ %%i in (*) do (
if not defined %%~nxi echo del "%%i"
)
pa ...
终于搞定了,谢谢你!!!你真的太猛了!啥都能解决。
作者: slovent 时间: 2009-7-26 04:03
原帖由 keen 于 2009-7-25 16:38 发表
在a.txt文本中是要保留的文件名字.一行一个,例如:1.txt
2.txt
3 5.txt@echo off
for /f "delims=" %%i in (a.txt) do set %%~i=a
for /r d:\ %%i in (*) do (
if not defined %%~nxi echo del "%%i"
)
pa ...
想借这个帖子向您提个问题可以吗?如何能让a.txt里增加通配符呢?如果我想排除目录中所有*.jpg的文件,企盼答复。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |