[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]批处理删除文件时怎么排除已知文件名的文件?

比如我现在要清空D盘文件,但有几个文件是不删除的,这些文件都是已经知道文件名的。
怎么用批处理删其他文件,而又排除不需要删的文件。

感谢KEEN的回复。你太棒了!!



[ 本帖最后由 huangu125 于 2009-7-25 17:01 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

回复 1楼 的帖子

假设要保留的文件名字为1.txt  和 2 3.txt.注:文件名中有空格一定要用双引号把文件名括起来.
  1. @echo off
  2. set str="%~nx0" "1.txt" "2 3.txt"
  3. for %%i in (%str%) do set %%~i=a
  4. for /r d:\ %%i in (*) do (
  5.     if not defined %%~nxi echo del "%%i"
  6. )
  7. pause
复制代码
%~nx0代表这个批处理本身.
请先试用这个批处理,要确定开始删除,请把del前面的echo去掉.
(*^_^*)

TOP

原帖由 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" 这样一行来写就会有很大工作量。

TOP

回复 3楼 的帖子

对,d:\是控制目录.如果怕删除错,可以先在 del前添加echo .

也可以排成
"1.jpg"
"2.jpg"
"3.jpg"
........
不过这种形式,最好写在一个文本中,然后由批处理读取.
(*^_^*)

TOP

原帖由 keen 于 2009-7-25 16:17 发表
对,d:\是控制目录.如果怕删除错,可以先在 del前添加echo .

也可以排成
"1.jpg"
"2.jpg"
"3.jpg"
........
不过这种形式,最好写在一个文本中,然后由批处理读取.


我试了几次,换行的那种排列,不可以用,是打开被排除的文件了。
如果用批处理读取该怎么操作啊。那个文本格式应该怎么写?
谢谢你,我是新手,请原谅哈。

TOP

回复 5楼 的帖子

在a.txt文本中是要保留的文件名字.一行一个,例如:
  1. 1.txt
  2. 2.txt
  3. 3 5.txt
复制代码
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do set %%~i=a
  3. for /r d:\ %%i in (*) do (
  4.     if not defined %%~nxi echo del "%%i"
  5. )
  6. pause
复制代码
1

评分人数

    • more: 热心助人...PB + 10
(*^_^*)

TOP

原帖由 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 ...


终于搞定了,谢谢你!!!你真的太猛了!啥都能解决。

TOP

原帖由 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的文件,企盼答复。

TOP

返回列表