Board logo

标题: [文件操作] 定时更改文件夹名,备份到指定文件夹 [打印本页]

作者: xhlpp    时间: 2008-9-1 15:22     标题: 定时更改文件夹名,备份到指定文件夹

各位老师,朋友:
我的思路是:
D:\A\123 这个文件夹,我想备份123这个文件夹到D:\B下面,备份之前先改名,以系统当前时间为新的文件夹名.每30分钟一次.
如何实现呢?

可以说详细点吗?
作者: xhlpp    时间: 2008-9-1 15:25

在线等,请帮助~
谢谢!!
作者: Batcher    时间: 2008-9-1 15:39

系统时间里面含有半角冒号,它在文件夹的名称中是非法字符,更改一下自己的需求吧。
另,最好给个例子,改名前:xxx,改名后:xxx。
作者: xhlpp    时间: 2008-9-1 15:44

你好,更改前文件夹名为:123456

更改后可以为:123456a

但:因为每30分钟要备份一次,如果每次都使用123456a这个备份后的文件夹名的话自然会起冲突,又该如何避免呢?
作者: wangwei4106    时间: 2008-9-1 16:53


这个就改成1234560000000001,这样就不会有问题了
作者: jxfa0086768    时间: 2008-9-1 19:00

@echo off
color 9F
title [定时备份程序]
mode con cols=40 lines=10
:1
md D:\B\%time:~0,5%>nul 2>nul
md d:\B\备份日志>nul 2>nul
xcopy d:\A\123\. D:\B\%time:~0,5%<nul>>d:\B\备份日志\日志.txt>nul 2>nul
echo %time:~0,5%>>d:\B\备份日志\日志.txt>nul 2>nul
echo.
echo.
echo 操作完成请查看日志
ping -n 4 127.1>nul 2>nul
::以上会自动生成一个日志,查看日志就可以知道是否备份成功
SET wait=ping -n 2 127.0.0.1 ^>^nul
for /l %%n in (1800,-1,0) do (
rem cls
echo -----------------------------------
echo 还有   %%n秒   将开始执行备份
echo -----------------------------------
%wait%
cls
)
goto 1
::以上为廷时部分1800秒刚好30分钟,由于你没有要求执行多少轮后退出所以是一直执行的。
作者: jxfa0086768    时间: 2008-9-1 19:02

因为我也是经常备份一些数据。所以还是有点心得的。呵。这个批应该能满足你的要求吧。
作者: Batcher    时间: 2008-9-1 19:55     标题: 回复 6楼 的帖子

还是用计划任务吧,这样延时不太好。
作者: jxfa0086768    时间: 2008-9-2 09:12

我也想过用任务计划.可是他要求的是30分钟一次.
作者: Batcher    时间: 2008-9-2 09:22     标题: 回复 9楼 的帖子

30分钟一次也可以用计划任务啊,看看帮助:
schtasks /?
作者: xhlpp    时间: 2008-9-2 11:04

谢谢6楼朋友和cher的赐教.
我去试一下.
计划任务我也试下,我希望30分钟可以备份一次.

谢谢二位!!
作者: xhlpp    时间: 2008-9-2 11:27     标题: 回复 6楼 的帖子

@echo off
color 9F
title [定时备份程序]
mode con cols=40 lines=10
:1
md D:\bf\%time:~0,5%>nul 2>nul
md D:\bf\备份日志>nul 2>nul
xcopy d:\A\123\. D:\bf\%time:~0,5%<nul>>D:\bf\备份日志\日志.txt>nul 2>nul
echo %time:~0,5%>>D:\bf\备份日志\日志.txt>nul 2>nul
echo.
echo.
echo 操作完成请查看日志
ping -n 4 127.1>nul 2>nul
::以上会自动生成一个日志,查看日志就可以知道是否备份成功
SET wait=ping -n 2 127.0.0.1 ^>^nul
for /l %%n in (1800,-1,0) do (
rem cls
echo -----------------------------------
echo 还有   %%n秒   将开始执行备份
echo -----------------------------------
%wait%
cls
)
goto 1
::以上为廷时部分1800秒刚好30分钟,由于你没有要求执行多少轮后退出所以是一直执行的。

和我的思路是一样的,谢谢您!
我将备份的目录改了一下D:\bf
脚本会在以下2个地方生成目录,但没有日志.
C:\Documents and Settings\Administrator\Files\bf\备份日志
D:\bf\备份日志

而且D:\bf下面也没有备份.文件包是空的.

请帮忙检查一下,有劳了!!
作者: xhlpp    时间: 2008-9-2 11:42

小弟找人写了一个,可以实现备份,是一分钟备份一次的,用系统时间命名:

备份的文件夹名为:
D:\B\2008-09-02-11-36
D:\B\2008-09-02-11-37
D:\B\2008-09-02-11-38
D:\B\2008-09-02-11-39
.
.
.

:loop
set now=%date:~0,10%-%time:~0,2%-%time:~3,2%
md D:\B\"%now%"
copy D:\A\123 D:\B\"%now%"
ping 127.0.0.1 -n 3
goto loop


请问改成10分钟或者30分钟备份一次又应该怎么写呢?
作者: Batcher    时间: 2008-9-2 13:58     标题: 回复 13楼 的帖子

这个方法不适合的你的需求,没有修改的必要。
作者: jxfa0086768    时间: 2008-9-2 14:46

批我测试过是正常的.你没生成日志文件.可能你没有操作复制吧.
还有关于你的怎么改成30分钟.请在论坛搜索一下.廷时的问题.里面有很多可以学习的.呵.很简单的问题自己去学习一下就行了.




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