Board logo

标题: [文件操作] [已解决谁帮忙完善下删除不必要文件的批处理? [打印本页]

作者: wuzhuo1987    时间: 2010-12-12 19:38     标题: [已解决谁帮忙完善下删除不必要文件的批处理?

本人批处理小白,刚接触学习批处理,很多都不懂,望高手指点下

详细内容在附件里

这是我写的草稿···但不完善
  1. echo off
  2. cls
  3. color 1f
  4. echo.
  5. echo.
  6. echo.
  7. echo.
  8. echo.
  9. echo                               ╭────────╮
  10. echo           ╭─────────┤  功 能 说  明  ├─────────╮
  11. echo           │                  ╰────────╯                  │
  12. echo           │                                                        │
  13. echo           │       ★☆★→删除一些不需要的文件夹←★☆★         │
  14. echo           │                                                        │
  15. echo           │                                                        │
  16. echo           ╰────────────────────────────╯
  17. echo.
  18. echo                  敬告:请先将本程序放在目录interface文件夹内
  19. echo                        再运行本程序
  20. echo.
  21. echo.
  22. echo                 →若【已】将本程序放入interface文件夹内,按任意键继续
  23. echo                 →若【未】将本程序放入interface文件夹内,点右上角X退出
  24. echo.
  25. echo.
  26. echo.
  27. echo.
  28. pause
  29. rd /s /q test_002
  30. rd /s /q test_008
  31. rd /s /q test_009
  32. rd /s /q test_012
  33. echo.
  34. echo.
  35. echo.
  36. echo.
  37. echo.
  38. echo.
  39. echo.
  40. echo.
  41. echo.
  42. echo                  ╭─────────────────────╮
  43. echo                  │                                          │
  44. echo                  │       整理完毕,按任意键退出...          │
  45. echo                  │                                          │
  46. echo                  ╰─────────────────────╯
  47. echo.
  48. echo.
  49. echo.
  50. echo.
  51. echo.
  52. echo.
  53. echo.
  54. echo.
  55. echo.
  56. echo.
  57. pause
复制代码
(为什么我画的框在本地对齐的,**坛上全错位了···)
--------------------------------------------------------------------------
目录结构为:
一个文件夹interface,
此文件夹内含有“删除测试.bat”,“config.ini”,及其他几个可能被删除的文件夹


具体功能就是:
    利用“删除测试.bat”调用“config.ini”内的名单,
    删除interface文件夹内的对应的文件夹
比如:config.ini内的名单为 test_003 和 test_007
那么我执行“删除测试.bat”,就删除interface文件夹内的“test_003”,"test_007"
这2个文件夹
--------------------------------------------------------------------------

1.能否在此批处理刚运行时检测自己是否在interface目录内(相对路径,检测自己所在的目录名为interface就行)
  若在  interface目录内,则继续执行后面语句,即:删除功能
  若不在interface目录内,则显示下面的界面,并结束本程序

echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo                  ╭──────────────────────────────────╮
echo                  │                                                                                     │
echo                  │     本程序不在interface文件夹内,按任意键退出...       │
echo                  │                                                                                     │
echo                  ╰──────────────────────────────────╯
echo.
echo.
echo.
echo.
echo.
echo.
echo.


2.目前我写的语句中,把要删除的文件夹给固定了,但这些文件夹名或许会变动
  就考虑是否能让批处理调用一个配置文件“config.ini”呢?
  “config.ini”内列出需要被删除的文件夹的名字,并且可以在后面添加备注
(配置文件可以不是ini后缀,txt也行,能调用里面内容就行)
3.“config.ini”内我不知道怎么添加备注,也就是说可以在被删除的名单后添加备注,
但不影响“删除测试.bat”的调用...
作者: hanyeguxing    时间: 2010-12-12 19:56

1,代码
  1. @echo off
  2. for %%a in ("%cd%") do if /i not "%%~na"=="interface" echo 目录错误&pause&exit
  3. if not exist config.ini (echo config.ini不存在&pause&exit) else for /f "delims=|" %%a in (config.ini) do (
  4. del /q/s/f/a "%%a" 2>nul
  5. rd /q/s "%%a" 2>nul
  6. )
复制代码
2,del是用来预先删除目录内可能存在的隐藏或系统属性文件,因为rd无法删除这些。
3,config.ini中文件夹名与备注之间使用|,管道符号。
4,楼主做的又不是特效代码,就不要在界面上弄那么花哨。。。
5,以下为config.ini示例:
;说明:文件夹名与备注之间使用|分隔
test_001|备注名001
test_002|备注名002
test_003|备注名003
test_004|备注名004
test_005|备注名005
test_006|备注名006
test_007|备注名007

[ 本帖最后由 hanyeguxing 于 2010-12-12 20:11 编辑 ]
作者: wuzhuo1987    时间: 2010-12-12 20:04

原帖由 hanyeguxing 于 2010-12-12 19:56 发表
1,代码@echo off
for %%a in ("%cd%") do if /i not "%%~na"=="interface" echo 目录错误&pause&exit
for /f "delims=|" %%a in (config.ini) do (
del /q/s/f/a "%%a"
rd /q/s "%%a"
)2,config.ini中文件夹名 ...



谢谢您的意见,我再分析下你的代码,加点界面

主要是我本身就够小白的,再加上我给别人做的
她比我更小白,看到命令行之类的就头痛,
还是做个界面,对她来说,直观点
不然她一看到命令行就脑袋冒星星

[ 本帖最后由 wuzhuo1987 于 2010-12-12 20:06 编辑 ]
作者: bailang3106    时间: 2010-12-12 20:12

呵呵 给女友做的.. 够细心的.
作者: hanyeguxing    时间: 2010-12-12 20:38

三、五行代码就能完成的事,非的弄成这样。。。
  1. @echo off&color 1f
  2. set "Han=※ 删除一些不需要的文件夹 ※"
  3. set Ye=警告:请先将本程序放在目录interface文件夹内
  4. call:Gu
  5. pause
  6. for %%a in ("%cd%") do if /i not "%%~na"=="interface" (
  7.         set Han=本程序不在interface文件夹内.
  8.         set Ye=请按任意键退出
  9.         goto:Gu
  10. )
  11. if not exist config.ini (
  12.         set "Han=※错误: config.ini 不存在※"
  13.         set Ye=请按任意键退出
  14.         goto:Gu
  15. )
  16. for /f "delims=|" %%a in (config.ini) do (
  17.         del /q/s/f/a "%%a" 2>nul
  18.         rd /q/s "%%a" 2>nul
  19. )
  20. set "Han=整理完毕,按任意键退出......"
  21. set Ye=制作:Hanyeguxing
  22. :Gu
  23. echo/
  24. echo/
  25. echo/
  26. echo/
  27. echo/
  28. echo/               ╭────────╮
  29. echo/     ╭─────────┤  说  明  ├─────────╮
  30. echo/     │         ╰────────╯         │
  31. echo/     │                            │
  32. echo/     │   ★☆★→%Han%←★☆★   │
  33. echo/     │                            │
  34. echo/     │                            │
  35. echo/     ╰────────────────────────────╯
  36. echo/
  37. echo/
  38. echo/
  39. echo/         %Ye%
  40. echo/
  41. echo/
  42. echo/
  43. echo/
  44. echo/
  45. echo/
  46. echo/
  47. pause
复制代码

作者: wuzhuo1987    时间: 2010-12-12 21:07

原帖由 hanyeguxing 于 2010-12-12 20:38 发表
三、五行代码就能完成的事,非的弄成这样。。。@echo off&color 1f
set "Han=※ 删除一些不需要的文件夹 ※"
set Ye=警告:请先将本程序放在目录interface文件夹内
call:Gu
pause
for %%a in ("%cd%") do if /i ...


谢谢了,

我自己用的话,不会弄界面了,把名单直接放bat里了
主要是给别个弄的,全命令看不懂




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