标题: [系统相关] (已解决)批处理开机备份(修改过的才会被备份) [打印本页]
作者: 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 就自動執行- @echo off
-
- copy %0 "%USERPROFILE%\「开始」菜单\程序\启动\"
-
- set 1=labuser
- :1
- if exist c:\users\%1%\backup (cd..&goto 2) else (goto end)
- goto p
- :2
- goto p
- :3
- xcopy "C:" "c:\user\%1%\backup" /s/e/y/d/f
- goto p
-
-
- :p
- pause
-
- :end
- 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 - @echo off
- setlocal enabledelayedexpansion
- ver | find "5.1." >nul && set "Startpath=%USERPROFILE%\「开始」菜单\程序\启动"
- ver | find "6." >nul && set "Startpath=%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
- if not exist "%Startpath%\%~nx0" copy %0 "%Startpath%\" /y
- ::if not exist "C:\Users\%USERNAME%\backup\" exit
- if not exist "%USERPROFILE%\backup\" exit
- if not exist "C:\backup\" md "C:\backup\"
- ::for /f "delims=" %%a in ('reg query "HKCU\Control Panel\International" /v sShortDate') do set "RegDateOld=%%a"
- ::set "RegDateOld=%RegDateOld:~-8%"
- ::reg add "HKCU\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
- set n=0
- for /r "%USERPROFILE%\backup\" %%a in (*) do (
- set "wrdate=%%~ta"
- set "wrdate=!wrdate:~,10!"
- if "!wrdate!" equ "!date:~,10!" (xcopy "%%a" "C:\backup\" /y & set n=1)
- )
- ::reg add "HKCU\Control Panel\International" /v sShortDate /t REG_SZ /d %RegDateOld% /f>nul
- if !n! == 0 exit
- 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、文件的修改日期不对
运行以下检测程序,把显示结果截图看看- @echo off
- echo %USERPROFILE%
- ver | find "5.1." >nul && set "Startpath=%USERPROFILE%\「开始」菜单\程序\启动"
- ver | find "6." >nul && set "Startpath=%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
- echo %Startpath%
- if not exist "C:\Users\%USERNAME%\backup\" (echo NO) else (echo OK)
- if not exist "%USERPROFILE%\backup\" (echo NO) else (echo OK)
- echo %date:~,10%
- for /r "%USERPROFILE%\backup\" %%a in (*) do %%~ta
-
- for /r "%USERPROFILE%\backup\" %%a in (*) do (
- set "wrdate=%%~ta"
- setlocal enabledelayedexpansion
- set "wrdate=!wrdate:~,10!"
- if "!wrdate!" equ "!date:~,10!" (echo xcopy "%%a" "C:\backup\" /y)
- endlocal
- )
- 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 |