[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

回复 11# lujice

大家相互学习!
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复  lujice


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



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

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

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

    预先谢谢了!!

    TOP

    回复 6# lujice


        谢谢指点!~那是个未完成的代码,不便大家阅读已删掉了。
    • if not exist "%~dp0GetTmp" md "%~dp0GetTmp"
      这句的意义类似md "%~dp0GetTmp">nul 2>nul,罗嗦了点!~
    寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

    TOP

    回复  lujice

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



        谢谢您!!成功了!!

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

    再一次谢谢您!!

    TOP

    本帖最后由 ivor 于 2012-2-5 12:48 编辑

    回复 7# lujice

        :copy   修改为,2楼的全部代码已经更新
    1. :copy
    2. cls
    3. set suffix=%1 %2 %3 %4 %5 %6 %7 %8
    4. for %%a in (%suffix%) do (
    5.         echo.&echo.         正在提取 %%a 文件...
    6. echo.&xcopy "%UserProfile%\Local Settings\Temporary Internet Files\*.%%a" "D:\IE缓存\%%a文件\" /S /Q /H /Y /C
    7. ping 127.0.0.1 -n 3 >nul 2>nul
    8. )
    9. goto DKK
    复制代码

    TOP

    回复 2# ivor


        运行您的代码失败!!

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

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

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

    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

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


    谢谢好人啊!!

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

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

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

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

    再一次谢谢您!!

    TOP

    回复 2# ivor
    1. if "%IE%"=="0" (
    2.     goto :QK
    3. ) else if "%IE%"=="1" (
    4.     call :copy %vedio%
    5. ) else if "%IE%"=="2" (
    6.     call :copy %audio%
    7. ) else if "%IE%"=="3" (
    8.     call :copy %picture%
    9. ) else if "%IE%"=="4" (
    10.     call :copy %document%
    11. ) else if "%IE%"=="5" (
    12.     goto :ZD
    13. )
    复制代码
    1

    评分人数

      • CrLf: 乐于助人技术 + 1

    TOP

    本帖最后由 cjiabing 于 2012-2-5 19:02 编辑
    1. @echo off
    2. ::查看临时文件(通用)
    3. start "" "C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5"
    4. for /f "tokens=* delims=" %%a in ('dir /a /b /s "%userprofile%\Local Settings\Temporary Internet Files\*.*"') do echo %%a
    5. pause
    复制代码

    应该不用setlocal,不懂怎么放进去了?!
    1. @echo off&setlocal enabledelayedexpansion&::by cjiabing&from http://hi.baidu.com/cjiabing
    2. title 查找和提取缓存文件
    3. ::提取临时文件指定文件名
    4. :GetTempFileName
    5. cls
    6. echo.
    7. echo,
    8. echo;    可以加入后缀名,如:mynetwork.html
    9. echo;    可以加入通配符,如:*qq*    *.jpg
    10. echo;
    11. set input=
    12. set /p input=    输入文件名:
    13. echo.&set num=0
    14. set "padd=%~dp0"
    15. cd /d  "C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5"
    16. echo:-------------------------------------------------------------------------
    17. for /f "tokens=*" %%a in ('dir %input% /b /s') do (set /a num+=1&echo;【!num!】%%~nxa&echo;%%~sdpa&echo;%%~tzaa&echo;)
    18. set inport=
    19. set /p inport=    是否提取文件【Y/Enter】输入数字提取指定行:
    20. if "%inport%"=="" goto GetTempFileName
    21. set js=0
    22. for /f "tokens=*" %%a in ('dir %input% /b /s') do (
    23.     set /a js+=1
    24.     if /i "%inport%"=="Y" copy "%%~a" "%padd%"
    25.     if /i "%inport%"=="!js!" copy "%%~a" "%padd%"
    26. )
    27. echo;
    28. echo    提取结束,请查看当前目录!
    29. echo;
    30. pause
    31. goto GetTempFileName
    复制代码
    1

    评分人数

      • CrLf: 乐于助人,幸苦了PB + 5 技术 + 1
    寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

    TOP

    本帖最后由 ivor 于 2012-2-10 13:16 编辑

    囧        太多代码了,打酱油路过,
    本来不想看了,这代码太臃肿了,楼主试试吧,现在精简掉了了很多代码了,我没有测试。。

    对你的K 块代码,好几处不解,
    cd 命令用得到吗?你删除文件都已经指定了绝对路径
    1. @echo off
    2. color 0a&mode con cols=70 lines=18&title 欢迎使用“IE缓存提取器”!!
    3. :IE
    4. cls&echo.&echo.
    5. echo.                   ——欢迎使用“IE缓存提取器”!!
    6. echo.
    7. echo.                 ╭───────────────╮
    8. echo.       ╭────┤  请选择,您要执行的操作——  ├─────╮
    9. echo.       │        ╰───────────────╯          │
    10. echo.       │     0: 清空IE缓存              3: 提取常见图片     │
    11. echo.       │                                                    │
    12. echo.       │     1: 提取常见视频            4: 提取常见文档     │
    13. echo.       │                                                    │
    14. echo.       │     2: 提取常见音频            5: 提取指定文件     │
    15. echo.       ╰──────────────────────────╯
    16. echo.                  作者:溪水听冬   QQ:471 996 462
    17. echo.&set /p IE=         输入您选择的“数字”后,请敲回车:
    18. attrib -s -h -r "%UserProfile%\Local Settings\*.*" /s /d >nul 2>nul
    19. REM /*************初始化文件后缀名
    20. set audio=MP3 WMA WAV CDA APE FLAC OGG AAC
    21. set vedio=FLV mp4 RM RMVB WMV AVI 3GP DivX
    22. set picture=BMP GIF JPG PNG BMP
    23. set document=TXT PDF RTF CHM HLP DOC XLS PPT
    24. REM ***********************************/
    25. if /i "%IE%"=="0" goto QK
    26. REM /************CALL调用:copy过程*******
    27. if /i "%IE%"=="1" call :copy %vedio%
    28. if /i "%IE%"=="2" call :copy %audio%
    29. if /i "%IE%"=="3" call :copy %picture%
    30. if /i "%IE%"=="4" call :copy %document%
    31. REM ***********************************/
    32. if /i "%IE%"=="5" goto ZD
    33. cls
    34. echo.&echo.&echo.         你输入的“ %IE% ”无效!!
    35. echo.&echo.&echo.         别调皮了,返回重新输入吧!!!
    36. echo.&echo.&pause
    37. goto IE
    38. REM /**cd 命令不该用的地方。已经被删除,如果有错误再添加回去
    39. :QK
    40. cls
    41. echo.&echo.&echo.             ——为了保证“IE缓存”删除干净,
    42. echo.&echo.&echo.         即将关闭 "IE 进程" 和 "视窗进程"...
    43. ping 127.0.0.1 -n 3 >nul 2>nul
    44. taskkill /f /im explorer.exe >nul 2>nul
    45. taskkill /f /im iexplore.exe >nul 2>nul
    46. rd /s /q "%userprofile%\Local Settings\History\"
    47. rd /s /q "%userprofile%\Local Settings\Temporary Internet Files\"
    48. del /f /s /q "%userprofile%\Local Settings\History\*.*"
    49. del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
    50. REM ***********************************//////
    51. goto IE
    52. REM /*多个提取过程因为有相同属性,集合到了一块代码,采用CALL传值
    53. :copy
    54. cls
    55. for %%a in (%*) do (
    56.         echo.&echo.         正在提取 %%a 文件...
    57. echo.&xcopy "%UserProfile%\Local Settings\Temporary Internet Files\*.%%a" "D:\IE缓存\%%a文件\" /S /Q /H /Y /C
    58. ping 127.0.0.1 -n 3 >nul 2>nul
    59. )
    60. goto DK
    61. REM ****************************************************//
    62. :ZD
    63. cls&echo.&echo.
    64. echo.                   ——即将提取您指定格式的文件!!
    65. echo.
    66. echo.                 ╭───────────────╮
    67. echo.       ╭────┤  请指定:您要提取的文件格式  ├─────╮
    68. echo.       │        ╰───────────────╯          │
    69. echo.       │      例如: 提取“图标文件”,就输入 —— ICO       │
    70. echo.       │                                                    │
    71. echo.       │      又如: 提取“广告动画”,就输入 —— SWF       │
    72. echo.       ╰──────────────────────────╯
    73. echo.&echo.&set /p ZD=         输入您选择的“文件后缀名”后,请敲回车:
    74. cls&echo.&echo.         正在提取 %ZD% 文件...
    75. echo.&xcopy "%UserProfile%\Local Settings\Temporary Internet Files\*.%ZD%" "D:\IE缓存\%ZD%文件\" /S /Q /H /Y /C
    76. ping 127.0.0.1 -n 3 >nul 2>nul
    77. goto DK
    78. :DK
    79. cls
    80. echo.&echo.             —— 您要提取的文件,已经全部提取到
    81. echo.&echo.         “D:\IE缓存\”文件夹中的相应目录!!
    82. echo.&echo.         如要提取IE浏览器的、其它格式的缓存文件,
    83. echo.&echo.         请返回主菜单,运行“提取指定文件”选项!
    84. echo.&pause
    85. if exist "D:\IE缓存\" (attrib -s -h -r "D:\IE缓存\*.*" /s /d &start "" "D:\IE缓存\")
    86. goto IE
    复制代码

    TOP

    返回列表