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

[文件操作] 【求助】一个cmd批处理还原备份的问题

我想应用在firefox还原备份上,需求如下
备份文件是用rar压缩的,备份文件含有时间命名,所以名称不固定
列出Firefox目录下的备份文件(文件名含有*profilebackup*.rar,在Firefox目录中),检测是否存在,如不存在脚本退出,如存在就列出并可选择恢复哪个,恢复之前检测firefox进程并关闭,再重命名当前配置目录名称为profile.old(也在Firefox目录中),将选择的备份压缩包解压到profile路径,一切OK之后,选择是否重启firefox
难点是如何恢复列出的备份文件,最好用列表可选择的方式:1、2、3选择指定压缩文件
希望这里的高手能帮忙解决,谢谢!

rar.exe我也是放在Firefox目录中了

TOP

dir /b *profilebackup*.rar 列表应该可以吧 在FOR里定义一下序列就好

TOP

得到了namejm的帮助,也在这里说声谢谢
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :Main
  4. cls
  5. set num=0
  6. for %%i in (*profilebackup*.rar) do (
  7. set /a num+=1
  8. set "File!num!=%%i"
  9. call echo   !num!. %%File!num!%%
  10. )
  11. if %num% equ 0 exit
  12. if %num% gtr 0 (
  13. echo.&echo ______________________________________________ &echo.
  14. echo     把要恢复的备份文件拖拽到本窗口中
  15. echo     或者选择上述文件前面对应的数字
  16. echo     直接回车将选择列表中最后一个文件
  17. echo.
  18. )
  19. set "choice="
  20. set /p "choice=    请选择:"
  21. if "%choice%"=="" (
  22. call :Recover
  23. exit
  24. )
  25. set /a "sum=%choice%+0" 2>nul
  26. if "%sum%"=="%choice%" (
  27. if exist "!File%choice%!" (
  28. call :Recover
  29. ) else (
  30. goto Main
  31. )
  32. ) else (
  33. echo "%choice:"=%"|findstr /i "^.[a-z]:\\.*\.rar.$">nul&&(
  34. call :Recover
  35. exit
  36. )
  37. goto Main
  38. )
  39. exit
  40. :Recover
  41. cls
  42. taskkill /f /im firefox.exe 2>nul
  43. rd /q /s profile.old 2>nul
  44. ren profile profile.old 2>nul
  45. md profile 2>nul
  46. rar x -r "!File%choice%!" profile
  47. cls
  48. echo.&echo     是否重启FireFox.exe?
  49. echo.
  50. echo     是[Y]/否[直接回车]
  51. echo.
  52. set "choice="
  53. set /p "choice=    请选择:"
  54. if /i "%choice%"=="y" (
  55. start "" "firefox.exe"
  56. )
  57. goto :eof
复制代码
只是在文件列表直接回车选择最后一个文件恢复时,并没有恢复备份,看代码看不出所以然

TOP

返回列表