Board logo

标题: 怎样删除指定文件夹里的所有文件? [打印本页]

作者: liuwushu     时间: 2007-12-17 21:11    标题: 怎样删除指定文件夹里的所有文件?

好比我要删除C:\Documents and Settings\All Users\Application Data 文件夹里所有文件夹,但是C:\Documents and Settings\All Users\Application Data 里的文件夹 bek文件夹要保留其它的都删掉。

[ Last edited by liuwushu on 2007-12-17 at 09:35 PM ]
作者: liuwushu     时间: 2007-12-17 21:22
不知道批处理能实现这个功能吗?
作者: lxmxn     时间: 2007-12-17 21:31
先把标题改了。
作者: liuwushu     时间: 2007-12-17 21:36
我已经改了,不好意思啊。。。

下次不会出现这样的错误了。。。
作者: fastslz     时间: 2007-12-17 22:39
@echo off
for /f "delims=*" %%i in ('dir /ad /b "C:\Documents and Settings\All Users\Application Data"^|find /v "bek"') do echo rd /s/q "%%i"
pause
实际应用去掉echo
作者: liuwushu     时间: 2007-12-17 23:02
谢谢,,,谢谢谢谢谢谢、、、
作者: fastslz     时间: 2007-12-17 23:14
如果不区分大小写find后面加 /i
作者: liuwushu     时间: 2007-12-17 23:19
好像删除不了文件夹
只能显示出那些多的文件夹

rd /s/q "新建文件夹"
rd /s/q "新建文件夹 (2)"
rd /s/q "新建文件夹 (3)"
请按任意键继续. . .

就出现这样
作者: liuwushu     时间: 2007-12-17 23:23
去掉echo就会出现

系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
请按任意键继续. . .
作者: fastslz     时间: 2007-12-17 23:23
不是说了实际应用去掉echo

rd /q/s不能随便乱用的,我们写代码加上echo是为你们负责
作者: fastslz     时间: 2007-12-17 23:24
@echo off
for /f "delims=*" %%i in ('dir /ad /b "C:\Documents and Settings\All Users\Application Data"^|find /v "bek"') do echo rd /s/q "C:\Documents and Settings\All Users\Application Data\%%i"
pause
作者: liuwushu     时间: 2007-12-17 23:30
谢谢大哥现在可以了,我现在就是有个新的问题。现在可以删除Application Data文件夹里的文件夹,要是想删除Application Data里面的文件呢? bek文件夹里面的东西保留。
作者: fastslz     时间: 2007-12-17 23:40
最后再加
del /f/q "C:\Documents and Settings\All Users\Application Data\*.*"
作者: liuwushu     时间: 2007-12-18 10:23
@echo off
for /f "delims=*" %%i in ('dir /ad /b "C:\Documents and Settings\Administrator\桌面\新建文件夹\"^|find /v "bek"') do rd /s/q "C:\Documents and Settings\Administrator\桌面\新建文件夹\%%i" del /f/q "C:\Documents and Settings\Administrator\桌面\新建文件夹\*.*"
pause

加了del /f/q出现这样的问题
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
请按任意键继续. . .

[ Last edited by liuwushu on 2007-12-18 at 10:42 AM ]
作者: liuwushu     时间: 2007-12-18 10:59
找找老帖就有了我要的,,,呵呵,

以下为演示代码,必须放在E盘之外的分区运行:
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------

@echo off
for /f "delims=" %%i in ('dir /a /b e:\') do (
    set flag=
    for /f "delims=" %%j in (test.txt) do if  /i "%%i"=="%%j" set flag=1
    if not defined flag echo "e:\%%i"
)
pause
  test.txt必须放在E盘之外的分区,里面的内容为不带路径的文件夹名,一行一条记录,比如:
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------

文件夹1
文件夹2
文件夹3
文件夹4
  如果对以上演示代码的效果很满意,可以用下面的代码来删除E盘下指定文件夹外的其他所有文件或文件夹:
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------

@echo off
for /f "delims=" %%i in ('dir /a /b e:\') do (
    set flag=
    for /f "delims=" %%j in (test.txt) do if  /i "%%i"=="%%j" set flag=1
    if not defined flag del /a /f "e:\%%i" 2>nul||rd /s "e:\%%i" 2>nul
)
pause
作者: jojan     时间: 2007-12-18 12:19
d:
md 123
xcopy "C:\Documents and Settings\All Users\Application Data\bak\*.*" d:\123 /s
c:
cd "\Documents and Settings\All Users\Application Data"
del *.* /y
deltree *.*
md bak
xcopy d:\123\*.* "C:\Documents and Settings\All Users\Application Data\bak" /s