Board logo

标题: [系统相关] (已解决)批处理开机备份(修改过的才会被备份) [打印本页]

作者: panda951    时间: 2015-3-30 17:00     标题: (已解决)批处理开机备份(修改过的才会被备份)

本帖最后由 panda951 于 2015-4-2 22:29 编辑

完成条件
1. 首先 先利用 IF 去 check current c: /users/(username)/backup 是否存在, 如果user 是 labuser , 路徑就變為 c:/users/(username) , 存在就繼續下一步,不存在直接結束
2. 檢查 folder 內 文件 是否 在今天被修改過,如果有檔案在今天被修改過 就到下一步,沒有就結束
3. 把所有今天被修改過的文件 copy paste 到 以下地址 c:\backup
4. 把 copy 過的filename show 給使用著看
5. 把 這個batch file 設定成 當 使用者login 就自動執行
  1. @echo off
  2. copy %0 "%USERPROFILE%\「开始」菜单\程序\启动\"
  3. set 1=labuser
  4. :1
  5. if exist c:\users\%1%\backup (cd..&goto 2) else (goto end)
  6. goto p
  7. :2
  8. goto p
  9. :3
  10. xcopy "C:" "c:\user\%1%\backup" /s/e/y/d/f
  11. goto p
  12. :p
  13. pause
  14. :end
  15. close
复制代码
因为我老师没写我还不明白的问题所以有些没写出来 问题是
2. 檢查 folder 內 文件 是否 在今天被修改過,如果有檔案在今天被修改過 -----》那个folder代表什么?电脑全部folder还是单单被指定的folder要被backup?
1. 首先 先利用 IF 去 check current c: /users/(username)/backup 是否存在, 如果user 是 labuser , 路徑就變為 c:/users/(username) , 存在就繼續下一步,不存在直接結束---》这个又什么意思?又改去 c:/users/(username) 又直接结束

如果无视这2个问题这个代码是不是算完成?
作者: panda951    时间: 2015-3-30 17:19

1跟2暂时无视先
因为我那个老师还没告诉我我不明白的问题==
麻烦帮看下3-5的对不对  感谢
作者: pcl_test    时间: 2015-3-30 17:54

本帖最后由 pcl_test 于 2015-3-31 11:48 编辑

回复 1# panda951
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ver | find "5.1." >nul && set "Startpath=%USERPROFILE%\「开始」菜单\程序\启动"
  4. ver | find "6." >nul && set "Startpath=%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
  5. if not exist "%Startpath%\%~nx0" copy %0 "%Startpath%\" /y
  6. ::if not exist "C:\Users\%USERNAME%\backup\" exit
  7. if not exist "%USERPROFILE%\backup\" exit
  8. if not exist "C:\backup\" md "C:\backup\"
  9. ::for /f "delims=" %%a in ('reg query "HKCU\Control Panel\International" /v sShortDate') do set "RegDateOld=%%a"
  10. ::set "RegDateOld=%RegDateOld:~-8%"
  11. ::reg add "HKCU\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
  12. set n=0
  13. for /r "%USERPROFILE%\backup\" %%a in (*) do (
  14. set "wrdate=%%~ta"
  15. set "wrdate=!wrdate:~,10!"
  16. if "!wrdate!" equ "!date:~,10!" (xcopy "%%a" "C:\backup\" /y & set n=1)
  17. )
  18. ::reg add "HKCU\Control Panel\International" /v sShortDate /t REG_SZ /d %RegDateOld% /f>nul
  19. if !n! == 0 exit
  20. pause
复制代码

作者: panda951    时间: 2015-3-31 09:19

回复 3# pcl_test


   他不到2秒就关 显示1 file(copy)是什么意思?
   这个要关机再开过才能跑还是直接能跑?
   我丢了很多file都copy不到(没关机)==

麻烦解答下
作者: panda951    时间: 2015-3-31 11:26

回复 3# pcl_test


   不能用 registry 里的 date 来判断
   要用 %date% 来判断的
他又增加完成条件......
作者: pcl_test    时间: 2015-3-31 12:26

回复 4# panda951
1、路径不对
2、文件的修改日期不对
运行以下检测程序,把显示结果截图看看
  1. @echo off
  2. echo %USERPROFILE%
  3. ver | find "5.1." >nul && set "Startpath=%USERPROFILE%\「开始」菜单\程序\启动"
  4. ver | find "6." >nul && set "Startpath=%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
  5. echo %Startpath%
  6. if not exist "C:\Users\%USERNAME%\backup\" (echo NO) else (echo OK)
  7. if not exist "%USERPROFILE%\backup\" (echo NO) else (echo OK)
  8. echo %date:~,10%
  9. for /r "%USERPROFILE%\backup\" %%a in (*) do %%~ta
  10. for /r "%USERPROFILE%\backup\" %%a in (*) do (
  11. set "wrdate=%%~ta"
  12. setlocal enabledelayedexpansion
  13. set "wrdate=!wrdate:~,10!"
  14. if "!wrdate!" equ "!date:~,10!" (echo xcopy "%%a" "C:\backup\" /y)
  15. endlocal
  16. )
  17. pause
复制代码
回复 5# panda951
::和rem是什么意思?if "!wrdate!" equ "!date:~,10!" 又是什么意思?
作者: panda951    时间: 2015-4-2 22:26

回复 6# pcl_test


    不好意思我这2天上不到网 网络运营商有问题...
迟回复不好意思...
这个代码要去我学校实验 因为我的电脑没labuser (电脑没空间弄)

暂时写个已解决先
没解决我再改
作者: kingshui    时间: 2015-6-4 16:38

直接用robocopy试下,如果 是win7以上系统




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