|
zzhh612
中级用户
  
积分 278
发帖 103
注册 2006-10-21
状态 离线
|
『楼 主』:
请教大家一个批处理的问题
使用 LLM 解释/回答一下
请问有没有一个批处理能实现删除一个目录中的除开指定一类文件外(如*.mp3)的其它所有的文件,以及子文件夹.包括隐藏的和只读的等...
|
|
2007-3-22 05:53 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第 2 楼』:
使用 LLM 解释/回答一下
有这样的批处理,不过要考虑好要达到的要求,然后再写代码。
因为这个包括的可能情况太多了
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-3-22 06:13 |
|
|
NaturalJ0
银牌会员
    
积分 1181
发帖 533
注册 2006-8-14
状态 离线
|
『第 3 楼』:
使用 LLM 解释/回答一下
把你要的文件先移出这目录,再彻底灭了它,最后重建目录,把文件移回去。
这样处理似乎简单点,可以少动些脑筋。
|
|
2007-3-22 06:22 |
|
|
balinger
中级用户
  
积分 356
发帖 115
注册 2004-7-27
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
for /f "tokens=* delims=" %%i in ('dir /a-d /b /s c:\test\') do (
if not %%~xi==.mp3 del "%%i" /f /a /q)
For /f "tokens=* delims=" %%i in ('dir /ad/b/s c:\test\ ^|sort /r') DO (
attrib -h -s -r "%%i"
rd /q "%%i")
Last edited by balinger on 2007-3-22 at 08:34 AM ]
|
|
2007-3-22 08:28 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
请自行测试
@echo off
attrib -h -s -r /s /d c:\test\*.*
for /f "delims=" %%i in ('dir /a-d /b /s c:\test\^|find /v ".mp3" 2^>nul') do (
del /q "%%i" 2>nul
rd /q "%%~dpi" 2>nul
)
pause
Last edited by zh159 on 2007-3-21 at 11:25 PM ]
|
|
2007-3-22 09:36 |
|
|
BWSkyer
中级用户
   我是DOS学者
积分 367
发帖 180
注册 2006-5-14 来自 重庆
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
我现在对FOR还是一无所知,但是我认为可以多写点代码
cd \你要进入的目录
copy *.你要的后缀名 (也可以用xcopy)
cd..
deltree 你不要的那个目录
这样应该也是一种方法吧。我不会FOR,所以只能这么想了。
|
|
2007-3-22 09:41 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
|
2007-3-22 09:53 |
|
|
BWSkyer
中级用户
   我是DOS学者
积分 367
发帖 180
注册 2006-5-14 来自 重庆
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
Originally posted by zh159 at 09:53:
rd /q 可以直接去处文件夹
rd不是只能删除空目录吗? 这里因该不好用吧。
|
|
2007-3-22 09:56 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
错了,应该是rd /s /q
rd/?
Last edited by zh159 on 2007-3-21 at 09:28 PM ]
|
|
2007-3-22 10:25 |
|
|
zzhh612
中级用户
  
积分 278
发帖 103
注册 2006-10-21
状态 离线
|
『第 10 楼』:
四楼的balinger,谢谢你的答复
使用 LLM 解释/回答一下
我试用了一下你给出的代码,基本上满足了我的意思,只是我还得把文件移到根目录文件夹中,再删除余下的空文件夹.这个功能也可以加入到其中吗?(就是把指定留下的文件移到第一个文件夹中,不留下子文件夹)...谢了,很佩服你.
|
|
2007-3-22 10:44 |
|
|
zzhh612
中级用户
  
积分 278
发帖 103
注册 2006-10-21
状态 离线
|
『第 11 楼』:
也感谢五楼zh159的答复....
使用 LLM 解释/回答一下
我试用了你给的代码,有一个BUG,就是没有能处理我的隐藏文件和文件夹.不过仍就谢了.愿共同学习.
|
|
2007-3-22 10:48 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
attrib -h -s -r /s /d
这句话就可以把当前目录下所有的文件以及子文件夹、子文件夹内的的所有文件都去处“隐藏、系统、只读”属性
attrib -h -s -r /s /d c:\test\
Last edited by zh159 on 2007-3-21 at 10:49 PM ]
|
|
2007-3-22 11:47 |
|
|
zzhh612
中级用户
  
积分 278
发帖 103
注册 2006-10-21
状态 离线
|
『第 13 楼』:
回12楼
使用 LLM 解释/回答一下
我也知道你的意思,但我经过运行,确不能处理掉隐藏文件和文件夹.代码是我直接复制到文本后,再改成.BAT的.我也在找这个问题.
好像你的批处理只能放在第一个目录下才能运行正常.若修改成
attrib -h -s -r /s /d c:\test 后反而在目录下也运行不正常了.
Last edited by zzhh612 on 2007-3-22 at 12:03 PM ]
|
|
2007-3-22 11:52 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第 14 楼』:
使用 LLM 解释/回答一下
attrib -h -s -r /s /d c:\test\*
rd /s /q是直接删除目录+里面的文件,如有mp3文件也一样删除,所以用rd /q
Last edited by zh159 on 2007-3-21 at 11:09 PM ]
|
|
2007-3-22 12:06 |
|
|
zzhh612
中级用户
  
积分 278
发帖 103
注册 2006-10-21
状态 离线
|
『第 15 楼』:
回zh159
使用 LLM 解释/回答一下
搞定了,要将第一句改为attrib -h -s -r /s /d c:\test\*.*
效果与balinger的代码一样.
谢谢.我也有所长劲了...
Last edited by zzhh612 on 2007-3-22 at 12:24 PM ]
|
|
2007-3-22 12:21 |
|