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

[文件操作] 批处理如何删除文本文件中列出的文件?

现有一文本文件1.txt,里面有一些文件和文件夹名(不清楚哪些是文件哪些是文件夹),没有路径,也不知道在D盘下面有没有这些文件和文件夹,希望用批处理找到这些文件,并删除这些文件。不管是文件夹还是文件都删除。
怎样做呢?希望能帮个忙。

[ 本帖最后由 a461680642 于 2010-12-2 10:44 编辑 ]

如果找到后是文件删除不?如果是文件夹删除不?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

谢谢楼上的关注。
不管是文件夹还是文件都删除。

TOP

回复 2楼 的帖子

我自己也写了一个,找不到文件。
For /f %%i in (1.txt) DO dir/s %%i & del/s /q %%i & rd %%i /s /q >2.txt
我知道肯定是哪错了。但是不清楚是哪有问题。

TOP

我又改了下。
For /f %%i in (1.txt) DO dir/a/s/b %%i & del/s /q %%i & rd %%i /s /q >2.txt
这次是能找到, 却不能删除了。

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (1.txt) do set #%%a==
  3. for /f "delims=" %%a in ('dir /b/s/a D:') do if defined #%%~nxa (
  4.         del /s /q /f /a "%%a" 2>nul
  5.         set a=%%~aa
  6.         if /i "!a:~0,1!"=="d" rd /s /q "%%a" 2>nul
  7. )
复制代码
第一个for读取文本,并将所有名称定义为变量
第二个for解析dir命令的输出,dir输出d盘所有文件和文件夹,包括隐藏、系统属性。
if defined #%%~nxa 扩展这个文件(夹)的名称,如果被定义,则符合条件
1,如果是文件,则del直接删除。
if /i "!a:~0,1!"=="d" 判断是否为文件夹条件不为真,rd不执行
2,如果是文件夹,
则无论是否使用/s参数,del都只会去删除该文件夹内的文件,而不删除文件夹本身。
因为rd不能删除文件夹内可能包含的系统或隐藏属性文件,所以必须先用del删除
if /i "!a:~0,1!"=="d" 判断是否为文件夹条件为真,执行rd删除文件夹及可能存在的子文件夹

[ 本帖最后由 hanyeguxing 于 2010-12-2 11:12 编辑 ]
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 6楼 的帖子

非常感谢,使用上面的代码解决了这个问题。

TOP

返回列表