Board logo

标题: 大家帮忙完善一个批处理 [打印本页]

作者: sunshineus     时间: 2008-7-10 00:23    标题: 大家帮忙完善一个批处理

用Dreamweaver做网页,但是Dreamweaver通常会在网站文件夹下自动创建名为“_notes”的文件夹,“_notes”文件夹下也会创建一些站点记录文件,比如:_notes.xml等;

我想做一个批理文件:“clean_notes.bat”,在做好网站后,把“clean_notes.bat”文件复制到网站文件夹里里运行一次,以达到把网站文件夹下所有子文件夹里的“_notes”的文件夹删除,并把所有子文件夹里的“_notes”里的文件夹里的所有文件也删除。

PS:我知道删除一个文件夹前,要先把这个文件里的文件删除(不知道是不是绝对是这样?)。

下面是我写到一半的,还不能实现我的要求,请高手指教:
clean_notes.bat
------------------------------
@echo off
echo 正在清除,请稍等......
del /f/s/q f:\mySite\*.*
rd /f/s/q f:\mySite\_notes
echo 清除完成!
echo. & pause
------------------------------
1、怎么判断只删除“_notes”目录下的所有文件而已?
2、这个脚本还要指定物理目录(f:\mySite\),想实现把“clean_notes.bat”复制到某一个目录后,就会在复制到的目录里开始工作,而不用指定目录(f:\mySite\),不知可不可以实现?
作者: bat-zw     时间: 2008-7-10 00:35

@echo off
for /f "delims=" %%i in ('dir /s /ad /b f:\mysite') do echo %%i|findstr "_notes">nul&&rd /q /s "%%i"
echo 搞定&pause>nul
[ Last edited by zw19750516 on 2008-7-10 at 12:36 AM ]
作者: HAT     时间: 2008-7-10 00:36
不用先删文件再删文件夹,rd可以直接删文件夹和文件夹里面的文件。
rd没有/f开关
作者: sunshineus     时间: 2008-7-10 01:31


  Quote:
Originally posted by zw19750516 at 2008-7-10 12:35 AM:
[code]
@echo off
for /f "delims=" %%i in ('dir /s /ad /b f:\mysite') do echo %%i|findstr "_notes">nul&&rd /q /s "%%i"
echo 搞定&pause>nul
[/cod ...

是不是可以实现放这个批处理放到任何一下文件夹都可以啦?
能够注解一下让我这些菜鸟看明白就好了。

[ Last edited by sunshineus on 2008-7-10 at 01:32 AM ]
作者: 26933062     时间: 2008-7-10 01:31
放在哪个目录下就对哪个目录进行操作。包括子目录
@for /f "delims=" %%a in ('dir/b/s/ad "_notes"') do @rd /s/q "%%a"
[ Last edited by 26933062 on 2008-7-10 at 01:33 AM ]
作者: HAT     时间: 2008-7-10 01:34
哪一部分看不明白就问,自然有人解答^_^
作者: sunshineus     时间: 2008-7-10 01:40


  Quote:
Originally posted by HAT at 2008-7-10 01:34 AM:
哪一部分看不明白就问,自然有人解答^_^

@for /f "delims=" %%a in ('dir/b/s/ad "_notes"') do @rd /s/q "%%a"
1、@for 是什么意思?
2、/f 是不是强制删除只读文件?
3、delims 是什么命令?
4、%%a 是一个变量吗?
5、dir/b/s/ad 什么意思?
作者: 26933062     时间: 2008-7-10 01:46
@ 是不在cmd窗口显示运行的命令语句
for 是命令
/f 是for 的参数
delims 应该也算是 for 的参数吧,不知道怎么说,反正是给for命令指定条件用的。
dir 是什么不用我说了吧?
/b /s /ad 都是dir的参数
具体的看命令帮助吧。  运行 dir  /?
朋友,你是第一天接触批处理吧?恕我直言,你这样问是难得学会的,还是自己看帮助,从基础学起吧!
作者: sunshineus     时间: 2008-7-10 01:53


  Quote:
Originally posted by 26933062 at 2008-7-10 01:46 AM:
朋友,你是第一天接触批处理吧?恕我直言,你这样问是难得学会的,还是自己看帮助,从基础学起吧!

是呀,这几天才刚刚看到批处理的东西,觉得挺有用的,也没什么基础,我也不是学计算机也不是学程序的,只是有点爱好。
上网百度一些批得理的教程也只是很零碎的,有什么教程介绍一下吗?
作者: HAT     时间: 2008-7-10 03:41
把本版的置顶帖子看完,那是最好的教程。
作者: bat-zw     时间: 2008-7-10 08:17


  Quote:
Originally posted by 26933062 at 2008-7-10 01:31:
放在哪个目录下就对哪个目录进行操作。包括子目录
@for /f "delims=" %%a in ('dir/b/s/ad "_notes"') do @rd /s/q "%%a"
[ Last ...

兄弟这样是不是会将其它目录下的_notes文件夹也删除掉的啊,因为我们从楼主的描述中是不能肯定所有的_notes文件夹都是没用的。
作者: radem     时间: 2008-7-10 10:24


  Quote:
2、这个脚本还要指定物理目录(f:\mySite\),想实现把“clean_notes.bat”复制到某一个目录后,就会在复制到的目录里开始工作,而不用指定目录(f:\mySite\),不知可不可以实现?

你可以把“clean_notes.bat”放到"_notes"同一目录,然后建立“clean_notes.bat”的快捷方式,再把此快捷方式复制到你方便操作的目录即可
作者: 26933062     时间: 2008-7-10 11:56


  Quote:
Originally posted by zw19750516 at 2008-7-10 08:17:

兄弟这样是不是会将其它目录下的_notes文件夹也删除掉的啊,因为我们从楼主的描述中是不能肯定所有的_notes文件夹都是没用的。

删除批处理所在目录及子文件夹里的所以_notes文件夹,这难道不是楼主的意图?
作者: bat-zw     时间: 2008-7-10 12:01


  Quote:
Originally posted by 26933062 at 2008-7-10 11:56:


删除批处理所在目录及子文件夹里的所以_notes文件夹,这难道不是楼主的意图?

这个脚本还要指定物理目录(f:\mySite\),想实现把“clean_notes.bat”复制到某一个目录后,就会在复制到的目录里开始工作,而不用指定目录(f:\mySite\),不知可不可以实现?
作者: 26933062     时间: 2008-7-10 12:05
呵呵,个人理解不同。
作者: sunshineus     时间: 2008-7-10 20:53


  Quote:
Originally posted by HAT at 2008-7-10 03:41 AM:
把本版的置顶帖子看完,那是最好的教程。

谢谢,会慢慢用心看的啦……
作者: dosyenanjs     时间: 2008-7-11 11:25
@echo off
echo 正在清除,请稍等......
attrib -h -r -s f:\mySite\_notes /s /d
rmdir /s /q f:\mySite\_notes

echo 清除完成!
echo. & pause
作者: tinlin     时间: 2008-7-11 15:15
这个放在哪里都行
@ECHO OFF
DEL F:\MY SITE\_NOTES\*.*
RD F:\MY SITE\_NOTES
PAUSE