标题: [文件操作] 【已解决】批处理如何删除除指定目录和文件外的所有文件(夹)? [打印本页]
作者: quboboo 时间: 2013-6-15 09:23 标题: 【已解决】批处理如何删除除指定目录和文件外的所有文件(夹)?
本帖最后由 quboboo 于 2013-6-18 14:59 编辑
比如想删除D盘所有文件,除了A、B、C三个目录和D.sys一个文件,应该怎么写呢?
没有黑框要用VBS?那该怎么写?
请大家帮忙,谢谢
作者: apang 时间: 2013-6-15 20:06
本帖最后由 apang 于 2013-6-15 20:08 编辑
- @echo off
- pushd "d:\"
- for /f "delims=" %%a in ('dir /b^|findstr /ivrbe "a b c d.sys"') do (
- if exist "%%a\" (echo rd /s /q "%%a\")else echo del "%%a"
- )
- pause
复制代码
作者: quboboo 时间: 2013-6-15 23:13
本帖最后由 quboboo 于 2013-6-18 09:18 编辑
非常感谢,休息后上班再测试
今天上班来测试,发现可用但需要改进,状况如下:
使用楼上兄弟提供的代码,只显示删除命令,所以我把最后两个的“echo”删掉,测试时能删除文件和文件夹,但对于隐藏的文件(夹)无效。
另外,保留的文件(夹)名中有空格该怎么写?
请再指点下,不胜感激
作者: quboboo 时间: 2013-6-18 09:18
今天上班来测试,发现可用但需要改进,状况如下:
使用楼上兄弟提供的代码,只显示删除命令,所以我把最后两个的“echo”删掉,测试时能删除文件和文件夹,但对于隐藏的文件(夹)无效。
另外,保留的文件(夹)名中有空格该怎么写?
请再指点下,不胜感激
作者: terse 时间: 2013-6-18 09:58
修改下- @echo off&setlocal enabledelayedexpansion
- pushd "d:\"
- for %%i in ("d.sys" "x y" "a" "b" "c" "a b c.sys") do set v=!v! /c:%%i
- for /f "delims=" %%a in ('dir /b^|findstr /ixv%v%') do (
- if exist "%%a\" (echo rd /s /q "%%a\")else echo del "%%a"
- )
- pause
复制代码
作者: apang 时间: 2013-6-18 10:43
有些隐藏文件和文件夹用这种方法是没法删除的,比如hiberfil.sys、pagefile.sys 和 System Volume Information。改一下,未作测试- @echo off
- set re="新建 文件夹" "a" "b" "c d.sys"
- pushd "D:\"
- for /f "delims=" %%a in ('dir /a/b^|findstr/ixvc:%re:" "=" /c:"%') do (
- if exist "%%a\" (
- echo rd /s /q "%%a\" 2>nul
- ) else echo del /a /f "%%a" 2>nul
- )
- pause
复制代码
作者: quboboo 时间: 2013-6-18 14:58
回复 6# apang
可以用,谢谢
作者: 522235677 时间: 2013-6-18 21:19
加echo 是防止错误,误删除别的文件。先看下命令确认一下
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |