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

[文件操作] 【已解决】批处理如何删除除指定目录和文件外的所有文件(夹)?

本帖最后由 quboboo 于 2013-6-18 14:59 编辑

比如想删除D盘所有文件,除了A、B、C三个目录和D.sys一个文件,应该怎么写呢?

没有黑框要用VBS?那该怎么写?

请大家帮忙,谢谢
1

评分人数

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

本帖最后由 apang 于 2013-6-15 20:08 编辑
  1. @echo off
  2. pushd "d:\"
  3. for /f "delims=" %%a in ('dir /b^|findstr /ivrbe "a b c d.sys"') do (
  4.     if exist "%%a\" (echo rd /s /q "%%a\")else echo del "%%a"
  5. )
  6. pause
复制代码

TOP

本帖最后由 quboboo 于 2013-6-18 09:18 编辑

非常感谢,休息后上班再测试

今天上班来测试,发现可用但需要改进,状况如下:
使用楼上兄弟提供的代码,只显示删除命令,所以我把最后两个的“echo”删掉,测试时能删除文件和文件夹,但对于隐藏的文件(夹)无效。

另外,保留的文件(夹)名中有空格该怎么写?

请再指点下,不胜感激

TOP

今天上班来测试,发现可用但需要改进,状况如下:
使用楼上兄弟提供的代码,只显示删除命令,所以我把最后两个的“echo”删掉,测试时能删除文件和文件夹,但对于隐藏的文件(夹)无效。

另外,保留的文件(夹)名中有空格该怎么写?

请再指点下,不胜感激

TOP

修改下
  1. @echo off&setlocal enabledelayedexpansion
  2. pushd "d:\"
  3. for %%i in ("d.sys" "x y" "a" "b" "c" "a b c.sys") do set v=!v! /c:%%i
  4. for /f "delims=" %%a in ('dir /b^|findstr /ixv%v%') do (
  5.     if exist "%%a\" (echo rd /s /q "%%a\")else echo del "%%a"
  6. )
  7. pause
复制代码
1

评分人数

TOP

有些隐藏文件和文件夹用这种方法是没法删除的,比如hiberfil.sys、pagefile.sys 和 System Volume Information。改一下,未作测试
  1. @echo off
  2. set re="新建 文件夹" "a" "b" "c d.sys"
  3. pushd "D:\"
  4. for /f "delims=" %%a in ('dir /a/b^|findstr/ixvc:%re:" "=" /c:"%') do (
  5.     if exist "%%a\" (
  6.         echo rd /s /q "%%a\" 2>nul
  7.     ) else echo del /a /f "%%a" 2>nul
  8. )
  9. pause
复制代码
1

评分人数

TOP

回复 6# apang


    可以用,谢谢

TOP

加echo 是防止错误,误删除别的文件。先看下命令确认一下

TOP

返回列表