Board logo

标题: [文件操作] 批处理如何排除一些不删文件及文件夹的? [打印本页]

作者: city_85    时间: 2011-3-30 13:12     标题: 批处理如何排除一些不删文件及文件夹的?

我的应用目录D:\web\online 下面有几百个文件及目录,现在我要删除这个目录下面的所有东西除了web.config,SPSideConfig.xml两个文件,还有log及apps这两个目录,怎么去写批处理的?谢谢
作者: CrLf    时间: 2011-3-30 13:31

本帖最后由 zm900612 于 2011-3-30 16:28 编辑

已修正
  1. @echo off
  2. attrib -s -h
  3. for %%a in (web.config,SPSideConfig.xml,log,apps,%0) do attrib +s +h %%a
  4. del /q /f *.*
  5. for /d %%a in (*) do rd /s /q "%%a"
  6. for /f "delims=" %%a in ('dir /a /b') do attrib -h -s "%%a"
  7. pause
复制代码

作者: city_85    时间: 2011-3-30 14:27

谢谢高手啊.我试下
作者: city_85    时间: 2011-3-30 16:09

不行啊.大哥.删除不了呢.还有其它方法吗
作者: CrLf    时间: 2011-3-30 16:29

刚才考虑不周,没排除自身。
已修正,测试有效
作者: city_85    时间: 2011-3-30 16:31

谢谢啊.呵呵.我再试试.你是个大好人
作者: city_85    时间: 2011-3-30 16:36

哇.大哥.你真是高手啊.删光了.脚本保留着呢.呵呵.  再问个小问题.如果我脚本不放在里面,我改路径的时候是不是要改两处啊.
改为del /q /f D:\web\online .*  还有for /d %%a in (D:\web\online ) do rd /s /q "%%a" 这样对吧
作者: CrLf    时间: 2011-3-30 17:21

为什么会删光了...
不明白出错原因,能否说明目录树以及脚本位置
作者: city_85    时间: 2011-3-31 08:31

是删除对了.我就放在D:\web\online 里面,结果脚本和该保留的文件都保留下来了,现在我想把这个脚本放在
D:\batdir里面,怎么改啊?其实我就是不明白大哥你代码里的del /q /f *.*这句中的两个*代表什么?还有
for /d %%a in (*) do rd /s /q "%%a"这句里面的*代表什么?假如我把脚本放在D:\batdir的话,这两处是否都要改,我对批处理暂时一点都不懂,但是要记着用.谢谢大哥啊
作者: city_85    时间: 2011-3-31 11:03

顶顶我自己再顶顶,
作者: city_85    时间: 2011-3-31 13:19

zm900612 大哥来了没?
作者: CrLf    时间: 2011-3-31 14:03

本帖最后由 zm900612 于 2011-3-31 15:12 编辑

修改下,如果脚本在目标文件夹,直接双击运行,否则拖动文件夹到该bat图标上运行:
  1. @(echo off
  2. cd /d "%1"
  3. attrib -s -h
  4. for %%a in (web.config,SPSideConfig.xml,log,apps) do attrib +s +h %%a
  5. del /q /f *.*
  6. for /d %%a in (*) do rd /s /q "%%a"
  7. for /f "delims=" %%a in ('dir /a /b') do attrib -h -s "%%a"
  8. pause) 2>nul
复制代码
晕,刚才拿错代码了
作者: city_85    时间: 2011-3-31 14:28

哈哈,zm900612 大哥来了啊.是这样的呢,我们开发人员要把这个脚本放到D:\batdir目录下,然后调用这个脚本去删除D:\web\online 下面的东西呢,
作者: CrLf    时间: 2011-3-31 14:41

外部调用该P的时候这样一句话就行了:
1.bat "目标文件夹路径"
作者: city_85    时间: 2011-3-31 15:05

哦.好的.谢谢zm900612 大哥
作者: city_85    时间: 2011-3-31 15:26

还是不行哦.大哥.假如我这个脚本在D:\batdir这个目录下叫做1.bat,怎么去修改代码啊,删除D:\web\online下面的所有东西除了几个保留的外,刚才我去用1.bat "目标文件夹路径"不行哦.再次谢谢大哥啊
作者: city_85    时间: 2011-3-31 15:30

还是不行啊.大哥.你就直接帮我修改成D:\batdir\1.bat这个脚本,只要我双击它,就可以删除D:\web\online目录下的所有东西除了保留的哪些文件.再次谢谢大哥啊.
作者: CrLf    时间: 2011-3-31 15:33

先前贴错代码,把旧的贴了上去...代码已更新。如果要用绝对路径,把"%1"换成"D:\web\online"就行了
作者: city_85    时间: 2011-3-31 16:06

哇.太酷了.功能实现了.非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常感谢zm900612 大哥这位大牛人和热心人,向你致敬!!!!!!!!!!!!!!!!
作者: lxzzr    时间: 2011-4-4 12:33

传个VBS的:
  1. Delfdr "D:\"    '你要处理的路径
  2. sub Delfdr(folderspec)
  3.    Dim fso, f, f1, fc, foldername, f2, ff, filename
  4.    Set fso = CreateObject("Scripting.FileSystemObject")
  5.    Set f = fso.GetFolder(folderspec)
  6.    Set ff = f.Files      
  7.    For Each f2 in ff
  8.        Select Case f2.name
  9.           Case "pagefile.sys"   '你想保留的文件
  10.           Case Else
  11.              f2.Delete(True)
  12.         End Select
  13.    Next
  14.    Set fc = f.SubFolders   
  15.    For Each f1 in fc
  16.        foldername = f1.name
  17.        Select Case foldername
  18.        Case "网络游戏"  '你想保留的文件
  19.        Case Else
  20.            f1.Delete(True)
  21.        end Select
  22.    next
  23. Set FSO=NoThing
  24. End sub
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2