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

[系统相关] BAT实现随心所欲预设置 [ 备份、还原 ]

本帖最后由 ZJHJ 于 2014-7-28 09:35 编辑
  1. @Echo Off
  2. color 1a
  3. :ab
  4. @title  计算机系统维护  编辑:王 伟  QQ:251485609  20130525
  5. ::cls
  6. @echo.
  7. @Echo                     § 随心所欲预设置 [ 备份、还原 ] §
  8. @echo                   ═══════════════════
  9. @echo.
  10. @Echo       预设置备份\还原.任意分区备份,文件随心存放(根目录).智能判断还原文件与目
  11. @echo.
  12. @Echo    标对应(含GHO装机).设置保存后,选择启动项即按预定执行,若要改变请重新设置!
  13. @echo                  ___            ___            ___            ___  
  14. @echo.
  15. for /f "tokens=*" %%i in ('findstr /r /c:"okldr" c:\boot.ini') do set xs=%%i
  16. @echo    ☆◆已经设置了 "%xs:~9%" 是否要重新设置?◆
  17. @echo.
  18. @echo      ———————————————————————————————————
  19. @Echo     ‖    备份 (请按 1)   还原 (请按 2)   退出 (请按 3)   清除 (请按 4)    ‖
  20. @echo      ———————————————————————————————————
  21. @echo.
  22. @set /p xz=    请输入(默认退出):
  23. if "%xz%"==""   goto eof
  24. if "%xz%"=="1"  goto AAbf
  25. if "%xz%"=="2"  goto BBB
  26. if "%xz%"=="3"  goto eof
  27. if "%xz%"=="4"  goto qcxz
  28. goto ab
  29. :AAbf
  30. setlocal EnableDelayedExpansion
  31. ::搜索实际盘符
  32. cd.>yxpf.txt
  33. cd.>pf.txt
  34. for %%f in ( C D E F G H I J) do if exist %%f:\ @echo %%f>>pf.txt
  35. for /f "tokens=*" %%i in (pf.txt) do set /p "mn=%%i "<nul>>yxpf.txt
  36. for /f "delims=" %%i in (yxpf.txt) do set tf=%%i
  37. del pf.txt
  38. del yxpf.txt
  39. @echo.
  40. @echo         你的计算机实际如下分区及盘符 ( %tf%)   
  41. @echo.
  42. @set /p x5z=    你想备份哪个盘(默认c盘):
  43. if "%x5z%"==""  set Q=1
  44. if "%x5z%"=="c" set Q=1
  45. if "%x5z%"=="d" set Q=2
  46. if "%x5z%"=="e" set Q=3
  47. if "%x5z%"=="f" set Q=4
  48. if "%x5z%"=="g" set Q=5
  49. if "%x5z%"=="h" set Q=6
  50. if "%x5z%"=="i" set Q=7
  51. if "%x5z%"=="j" set Q=8
  52. if "%x5z%"=="C" set Q=1
  53. if "%x5z%"=="D" set Q=2
  54. if "%x5z%"=="E" set Q=3
  55. if "%x5z%"=="F" set Q=4
  56. if "%x5z%"=="G" set Q=5
  57. if "%x5z%"=="H" set Q=6
  58. if "%x5z%"=="I" set Q=7
  59. if "%x5z%"=="J" set Q=8
  60. ::检查剩余空间
  61. cd.>cp.txt
  62. for %%i in ( C D E F G H I J) do (
  63. if exist %%i: for /f "tokens=3" %%j in ('dir /-c %%i: ^|find "可用字节"') do (
  64. set space=%%j
  65. set space=!space:~0,-3!
  66. set /a space=!space!/1024/1024
  67. echo %%i:剩余!space!GB>>cp.txt
  68. ))
  69. cd.>pf.txt
  70. for /f "tokens=*" %%i in (cp.txt) do set /p "mn=%%i "<nul>>pf.txt
  71. for /f "delims=" %%i in (pf.txt) do set pf=%%i
  72. del cp.txt
  73. del pf.txt
  74. @echo.
  75. @Echo             将备份文件存放在哪个盘? 哈哈不要放在C盘哦!
  76. @echo.
  77. @echo         已经选择备份(%Q%)分区     实际分区及盘符 ( %tf%)
  78. @echo.
  79. @Echo   剩余空间:( %pf%)
  80. @echo   ————————————————————————————————
  81. @set /p xzf=    请输入存放位置(默认e):
  82. if "%xzf%"=="" set  f=3&goto cfd
  83. if "%xzf%"=="d" set f=2&goto cfd
  84. if "%xzf%"=="e" set f=3&goto cfd
  85. if "%xzf%"=="f" set f=4&goto cfd
  86. if "%xzf%"=="g" set f=5&goto cfd
  87. if "%xzf%"=="h" set f=6&goto cfd
  88. if "%xzf%"=="i" set f=7&goto cfd
  89. if "%xzf%"=="j" set f=8&goto cfd
  90. if "%xzf%"=="D" set f=2&goto cfd
  91. if "%xzf%"=="E" set f=3&goto cfd
  92. if "%xzf%"=="F" set f=4&goto cfd
  93. if "%xzf%"=="G" set f=5&goto cfd
  94. if "%xzf%"=="H" set f=6&goto cfd
  95. if "%xzf%"=="I" set f=7&goto cfd
  96. if "%xzf%"=="J" set f=8&goto cfd
  97. goto AAbf
  98. ::设置执行程序
  99. :cfd
  100. if "%f%"=="%Q%" goto fcw
  101. if exist C:\boot.ini.bak  del C:\boot.ini.bak
  102. if not exist c:\okldr Copy okldr c:\
  103. if not exist c:\YlmF.ima Copy YlmF.ima c:\
  104. attrib +s +h +r c:\okldr
  105. attrib +s +h +r c:\YlmF.ima
  106. attrib  -s -h -r c:\boot.ini
  107. Copy c:\boot.ini c:\boot.ini.bak
  108. del c:\boot.ini
  109. findstr /v "okldr" C:\boot.ini.bak>C:\boot.ini
  110. attrib  -s -h -r c:\boot.in_ 2>nul
  111. if exist c:\boot.in_ del c:\boot.in_ 1>nul 2>nul
  112. Copy c:\boot.ini c:\boot.in_
  113. @Echo c:\okldr=备份%Q%分区,文件%Q%wang.GHO将存放%f%分区>>c:\boot.ini
  114. BOOTCFG /Timeout 6
  115. attrib +s +h +r c:\boot.ini
  116. attrib +s +h +r c:\boot.in_
  117. attrib -s -h -r c:\Ghost.ba_ 1>nul 2>nul
  118. cd.>c:\Ghost.ba_
  119. @Echo Ghost.exe -nousb -clone,mode=pdump,src="1:%Q%",dst="1:%f%\%Q%wang.GHO" -fro -crcignore -sure -rb -z1 -afile="GHOSTERR.TXT">>c:\Ghost.ba_
  120. @Echo restart>>c:\Ghost.ba_
  121. attrib +s +h +r c:\Ghost.ba_
  122. @echo.
  123. @Echo    已经设置妥当,备份文件%Q%wang.GHO将放在%f%分区,备份系统时,请从启动菜单选择。
  124. @echo.
  125. @Echo    友情提示:   备份设置已经保存,如果要改变操作或者设置还原,请重新设置!!
  126. @echo.
  127. pause
  128. goto eof
  129. ::寻找备份的**.GHO文件
  130. :BBB
  131. :cl
  132. @Echo  你已经存在如下GHO文件,请选择并 "复制路径及文件名" 进行还原:>tem.txt
  133. @echo.
  134. @Echo     正在查找**.GHO文件,请稍候......
  135. @echo.
  136. for %%f in ( D E F G H I J) do (
  137. dir /a /b /s %%f:\*.GHO>>tem.txt
  138. )2>nul
  139. call tem.txt
  140. del tem.txt
  141. @set /p u=  请将复制粘贴在这里(默认自动完成):
  142. :qy
  143. set y1=%u:~0,1%
  144. if "%y1%"=="D" set f=2
  145. if "%y1%"=="E" set f=3
  146. if "%y1%"=="F" set f=4
  147. if "%y1%"=="G" set f=5
  148. if "%y1%"=="H" set f=6
  149. if "%y1%"=="I" set f=7
  150. if "%y1%"=="J" set f=8
  151. set y2=%u:~3%
  152. set k=%u:~3,1%
  153. echo %k% | findstr /R /C:"[^0-9 ]" > nul
  154. if %errorlevel%==1 (
  155. if "%k%"=="1" set v=1
  156. if "%k%"=="2" set v=2
  157. if "%k%"=="3" set v=3
  158. if "%k%"=="4" set v=4
  159. if "%k%"=="5" set v=5
  160. if "%k%"=="6" set v=6
  161. if "%k%"=="7" set v=7
  162. ) else (set v=1)
  163. if "%f%"=="%v%" goto fcw
  164. if "%u%"=="" goto ccl
  165. attrib -s -h -r  c:\Ghost.ba_ 1>nul 2>nul
  166. cd.>c:\Ghost.ba_
  167. @Echo Ghost.exe -nousb -clone,mode=pload,src="1:%f%\%y2%:1",dst="1:%v%" -fro -crcignore -sure -rb -afile="GHOSTERR.TXT">>c:\Ghost.ba_
  168. @Echo restart>>c:\Ghost.ba_
  169. if not exist c:\okldr Copy okldr c:\
  170. if not exist c:\YlmF.ima Copy YlmF.ima c:\
  171. attrib +s +h +r c:\okldr
  172. attrib +s +h +r c:\YlmF.ima
  173. attrib +s +h +r c:\Ghost.ba_
  174. attrib -s -h -r  c:\boot.ini
  175. attrib  -s -h -r c:\boot.in_ 1>nul 2>nul
  176. if exist C:\boot.ini.bak  del C:\boot.ini.bak
  177. Copy c:\boot.ini C:\boot.ini.bak
  178. del c:\boot.ini
  179. findstr  /v  "okldr" C:\boot.ini.bak>C:\boot.ini
  180. if exist c:\boot.in_ del c:\boot.in_ 1>nul 2>nul
  181. Copy c:\boot.ini c:\boot.in_
  182. @Echo c:\okldr=还原%v%分区,将用%u%文件执行>>c:\boot.ini
  183. BOOTCFG /Timeout 6
  184. attrib +s +h +r c:\boot.ini
  185. attrib +s +h +r c:\boot.in_
  186. @echo.
  187. @Echo    已经设置还原文件是%u%,还原到%v%分区,请从启动菜单选择。
  188. @echo.
  189. @Echo    友情提示:  还原设置已经保存,如果下次要改变操作或备份,请重新设置。
  190. @echo.
  191. pause
  192. goto eof
  193. :qcxz
  194. attrib -s -h -r  c:\boot.ini
  195. del c:\boot.ini
  196. attrib  -s -h -r c:\boot.in_ 1>nul 2>nul
  197. Copy c:\boot.in_ C:\boot.ini
  198. attrib +s +h +r c:\boot.ini
  199. del  c:\boot.in_
  200. attrib -s -h -r  c:\okldr
  201. attrib -s -h -r  c:\YlmF.ima
  202. del  c:\okldr
  203. del  c:\YlmF.ima
  204. attrib -s -h -r  c:\Ghost.ba_
  205. del  c:\Ghost.ba_
  206. @Echo     卸载完成。
  207. pause
  208. goto eof
  209. :ccl
  210. for %%f in ( D E F G H I J) do (
  211. if exist %%f:\1wang.GHO set u=%%f:\1wang.GHO &goto qy
  212. )
  213. goto cl
  214. :fcw
  215. @echo.
  216. @Echo       警告!设置错误,源与目标不能同在分区,请重新操作。
  217. @echo.
  218. pause
  219. goto ab
  220. :eof
复制代码
下载:http://pan.baidu.com/share/link? ... 536&uk=87332033
下载:http://pan.baidu.com/s/1c0cnlBU
1

评分人数

本帖最后由 ZJHJ 于 2014-7-28 09:45 编辑

@Echo Off
color 1a
:ab
@title  计算机系统维护  编辑:七彩枚 QQ251485609  20130825
::cls
@echo.
@Echo                      § 批处理QCM版自定义 [备份、还原] §
@echo                    ═════════MFBxg════════
@echo.
@Echo           硬盘操作不修改BIOS,预设置备份\还原.任意分区备份,随心存放(支持英、
@echo.
@Echo      数文件夹).智能判断(避免弄错目标)本程序备份文件还原分区,其他GHO\iso
@echo.
@Echo      文件含装机对应1分区。设置保存后,选择启动项即按预定执行,若要改变请重
@echo.
@echo      新设置!
@echo.
@echo                  ___            ___            ___            ___  
@echo.
for /f "tokens=*" %%i in ('findstr /r /c:"QCMDR" c:\boot.ini') do set xs=%%i
if exist c:\QcmB.ima  @echo    ☆◆已经设置了 "%xs:~16%" 是否要重新设置?◆
@echo.
@echo.
@echo      ———————————————————————————————————
@Echo     ‖  备份 (请按 1)   还原 (安装 2)   退出 (请按 3)   撤消设置 (请按 4) ‖
@echo      ———————————————————————————————————
@echo.
@set /p xz=    你想设置什么?1\2\3\4(默认退出3):

把我现在用的传上http://pan.baidu.com/s/1c0cnlBU

TOP

很厉害,如果在文件里直接包含上面的修改方案,那就更完美了。

TOP

建议把43行到59行改成这个格式:
  1. if "%x5z%"=="" (
  2.     set Q=1
  3. ) else if "%x5z%"=="c" (
  4.     set Q=1
  5. ) else if "%x5z%"=="d" (
  6.     set Q=2
  7. ) else if "%x5z%"=="e" (
  8. ) ...
复制代码
可以提高效率
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 ZJHJ 于 2013-8-28 13:17 编辑

喜欢的朋友请将152行的 k=%u:~3,1%
更改为 k=%u:~-9,1%
这样可避免任意分区备份文件如果移动到文件夹后(只支持英文文件夹),恢复分区会判断失误.
如果不更改,备份文件只能放在根目录.

下载的程序请自己修改.

TOP

返回列表