[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]如何精简IE缓存提取工具的批处理文件?

我正在尝试用批处理写一些简单的工具。下面这个“IE缓存提取工具.bat”,就是我的一次尝试。试着运行,效果还可以。但是,代码也太庸长、太重复了吧!!

问题已经解决。大家修改后的“最终代码”如下——
  1. @echo off
  2. color 0a&mode con cols=70 lines=18&title 欢迎使用“IE缓存提取器”!!
  3. set LJ=%cd%
  4. set CS=%UserProfile%\Local Settings\Temporary Internet Files\Content.IE5
  5. :IE
  6. cls&echo.&echo.
  7. echo.                   ——欢迎使用“IE缓存提取器”!!
  8. echo.
  9. echo.                 ╭───────────────╮
  10. echo.       ╭────┤  请选择,您要执行的操作——  ├─────╮
  11. echo.       │        ╰───────────────╯          │
  12. echo.       │     0: 清空IE缓存              3: 提取常见图片     │
  13. echo.       │                                                    │
  14. echo.       │     1: 提取常见视频            4: 提取常见文档     │
  15. echo.       │                                                    │
  16. echo.       │     2: 提取常见音频            5: 提取指定文件     │
  17. echo.       ╰──────────────────────────╯
  18. echo.                  作者:溪水听冬   QQ:471 996 462
  19. echo.&set /p IE=         输入您选择的“数字”后,请敲回车:
  20. attrib -s -h -r "%CS%\*.*" /s /d >nul 2>nul
  21. set SP=FLV mp4 RM RMVB WMV AVI ASF 3GP DivX
  22. set YP=MP3 WMA WAV CDA APE FLAC OGG AAC
  23. set TP=BMP GIF JPG PNG TGA SVG
  24. set WD=TXT PDF RTF CHM HLP DOC XLS PPT
  25. if /i "%IE%"=="0" goto QK
  26. if /i "%IE%"=="1" call :copy %SP%
  27. if /i "%IE%"=="2" call :copy %YP%
  28. if /i "%IE%"=="3" call :copy %TP%
  29. if /i "%IE%"=="4" call :copy %WD%
  30. if /i "%IE%"=="5" goto ZD
  31. cls
  32. echo.&echo.&echo.         你输入的“ %IE% ”无效!!
  33. echo.&echo.&echo.         别调皮了,返回重新输入吧!!!
  34. echo.&echo.&pause
  35. goto IE
  36. :QK
  37. cls
  38. echo.&echo.&echo.             ——为了保证“IE缓存”删除干净,
  39. echo.&echo.&echo.         即将关闭 "IE 进程" 和 "视窗进程"...
  40. ping 127.0.0.1 -n 3 >nul 2>nul
  41. CD "%CS%\"
  42. taskkill /f /im explorer.exe >nul 2>nul
  43. taskkill /f /im iexplore.exe >nul 2>nul
  44. rd /s /q "%CS%\" >nul 2>nul
  45. del /f /s /q "%CS%\*.*" >nul 2>nul
  46. start explorer.exe >nul 2>nul
  47. CD %LJ%
  48. goto IE
  49. :copy
  50. cls
  51. set DQ=%1 %2 %3 %4 %5 %6 %7 %8 %9
  52. for %%a in (%DQ%) do (
  53. echo.&echo.         正在提取 %%a 文件...
  54. echo.&xcopy "%CS%\*.%%a" "%LJ%\IE缓存\%%a文件\" /S /Q /H /Y /C
  55. ping 127.0.0.1 -n 3 >nul 2>nul
  56. )
  57. goto END
  58. :ZD
  59. cls&echo.&echo.
  60. echo.                    ——即将提取您指定的文件!!
  61. echo.
  62. echo.                 ╭───────────────╮
  63. echo.       ╭────┤  请指定:您要提取的文件格式  ├─────╮
  64. echo.       │        ╰───────────────╯          │
  65. echo.       │      例如: 提取“图标文件”,就输入 —— ICO       │
  66. echo.       │                                                    │
  67. echo.       │      又如: 提取“广告动画”,就输入 —— SWF       │
  68. echo.       ╰──────────────────────────╯
  69. echo.&echo.&set /p ZD=         输入您选择的“文件后缀名”后,请敲回车:
  70. cls&echo.&echo.         正在提取 %ZD% 文件...
  71. echo.&xcopy "%CS%\*.%ZD%" "%LJ%\IE缓存\%ZD%文件\" /S /Q /H /Y /C
  72. ping 127.0.0.1 -n 3 >nul 2>nul
  73. goto END
  74. :END
  75. cls
  76. if exist "%LJ%\IE缓存\" (goto CG)
  77. echo.&echo.&echo.         “IE缓存目录” 中,没有您要提取的文件!!
  78. echo.&echo.&echo.         请浏览一次相应网页后,再来提取!!
  79. echo.&echo.&pause
  80. goto IE
  81. :CG
  82. attrib -s -h -r "%LJ%\IE缓存\*.*" /s /d
  83. echo.&echo.         资源已提取到“%LJ%\IE缓存”目录中!
  84. echo.&echo.         如要提取其它格式的缓存文件,请返回主菜单,
  85. echo.&echo.         运行“提取指定文件”选项!
  86. echo.&pause
  87. goto IE
复制代码
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 lujice 于 2012-2-5 12:19 编辑
囧        太多代码了,打酱油路过,
本来不想看了,这代码太臃肿了,楼主试试吧,现在精简掉了了很多代码了 ...
ivor 发表于 2012-2-4 19:27


谢谢好人啊!!

我的 “:QK”板块之所以这么写,原因有二:

1、分别以RD和DEL命令各删除一次,是为了删除的更彻底。

2、用RD命令清空某目录下所有的文件和子目录,但不删除该目录,写法都应该是——
先进入这个目录,
再删除这个目录。
(由于已经进入了这个目录,这个目录被占用。因此,该目录本身不会被删除)
最后再回到原来的路径。

我现在就去检查代码运行的情况。

再一次谢谢您!!

TOP

本帖最后由 lujice 于 2012-2-5 12:16 编辑

回复 3# cjiabing
见有这个半拉子工程也拿出来了,可能未完成!


有两段代码不懂,麻烦斑竹逐句解释一下,我太笨!!
  1. if %input%==2 set "type=*.jpg *.jpeg *.gif bmp *.png *.tiff *.PSD"&goto _TREE
复制代码
  1. :_TREE
  2. if not exist "%~dp0GetTmp" md "%~dp0GetTmp"
  3. for /d %%a in ("%userprofile%\Local Settings\Temporary Internet Files\Content.IE5\*") do (
  4.     echo:%%a&cd /d %%a
  5.     for /r  %%i in (%TYPE%) do (
  6.         if exist "%~dp0GetTmp\%%~na" (Xcopy /s /y "%%~i" "%~dp0GetTmp\%%~na") else (md "%~dp0GetTmp\%%~na"&Xcopy /s /y "%%~i" "%~dp0GetTmp\%%~na")
  7.     )
  8. )
  9. cd /d %~dp0
  10. cls&dir /b "%~dp0GetTmp"
  11. pause&goto start
复制代码
不过我感觉,斑竹的代码还可以精简!!

    因为复制文件,不用判断“最后存放目录”是否存在;也不用专门写代码建立“最后存放目录”。

    比如这段简单的代码——
  1. @echo off
  2. cls&echo.&echo.         正在提取 MP3 文件...
  3. echo.&xcopy "%UserProfile%\Local Settings\Temporary Internet Files\Content.IE5\*.MP3" "%CD%\IE缓存\MP3文件\" /S /Q /H /Y /C
  4. ping 127.0.0.1 -n 3 >nul 2>nul
  5. exit
复制代码
注意——把"%CD%\IE缓存\MP3文件\",写作"%CD%\IE缓存\MP3文件",批处理就不能自动建立“最后存放目录”了!!

其中的变量%CD%,是系统默认的批处理当前目录。请看——
  1. @echo off
  2. echo.&echo.     当前盘符:%~d0
  3. echo.&echo.     当前盘符和路径:%~dp0
  4. echo.&echo.     当前批处理全路径:%~f0
  5. echo.&echo.     当前盘符和路径的短文件名格式:%~sdp0
  6. echo.&echo.     当前CMD默认目录:%cd%
  7. echo.&pause
  8. exit
复制代码

TOP

回复 2# ivor


    运行您的代码失败!!

比如,要复制音频文件,则只能复制MP3文件,后面的那些WMA、WAV、CDA、APE、FLAC、OGG和AAC文件,统统都没复制出来。

也许,你的变量循环赋值问题没解决好......

我没能力改写,等您了....,.,.

TOP

回复  lujice

    :copy   修改为,2楼的全部代码已经更新
ivor 发表于 2012-2-5 12:45



    谢谢您!!成功了!!

您写在8楼的这段代码,简明易懂,正适合于我这种初学者学习!!

再一次谢谢您!!

TOP

回复  lujice


    谢谢指点!~那是个未完成的代码,不便大家阅读已删掉了。
  • if not exist "%~dp0Ge ...
    cjiabing 发表于 2012-2-5 19:04



  •     我这么菜的水平......斑竹居然如此谦虚......

    :L 汗!爆汗!!瀑布汗!!

    只希望斑竹以后能多帮帮我!!

    预先谢谢了!!

    TOP

    返回列表