标题: 再发一次:如何用批处理进行备份,不是那么简单
[打印本页]
作者: sharenbujianxue
时间: 2007-5-7 08:31
标题: 再发一次:如何用批处理进行备份,不是那么简单
某文件夹中有N 多.cpp文件,现在对所有的进行备份!原则,如果存在备份文件且源文件比备份文件的修改时间更晚,则覆盖当前备份文件。例如:
code.cpp 的修改时间为 2005-5-7 12:00
code.bak 的修改时间为 2005-5-6 12:00 则创建一个新的备份文件,删除旧的备份。
作者: sharenbujianxue
时间: 2007-5-7 08:39
标题: 先顶上切!
有高手帮帮忙行吗??
作者: sharenbujianxue
时间: 2007-5-7 09:02
标题: 有事要出门一下,顶一个先,高手帮帮忙
我的一个思路是
//:
先把所有需要的信息输入到两个文件:
TempSrc.tmp 存放 .cpp 修改的时间和名称
TempDst.tmp 存放 .bak 修改的时间和名称
@echo off
dir *.cpp /t:w > TempSrc.tmp
dir *.bak /t:w > TempDst.tmp
pause
第二步:
@echo off
for /f "token = 1,2,3,4,5 declim=-:" %%a in(TempSrc.tmp) do (
....
)
因为日期格式为:2005-05-05 12:00
我始终不能正确的解析出来:
a = 2005
b = 05
c = 05 12
.... 按我的想法是:如果能够正确的解析出日期就好了,因为是新手,所有请大家不要BS,这是在我所懂的情况下,唯一能想到的了!
作者: baomaboy
时间: 2007-5-7 09:09
原帖还没沉就发新贴,浪费论坛资源。
作者: sharenbujianxue
时间: 2007-5-7 20:11
我晕,大家帮帮忙三,刚刚学批处理,啥子都不会!怎么没人搭理呢!!!
作者: sonicandy
时间: 2007-5-7 20:24
推荐用最简单的方法:[公文包]
作者: sharenbujianxue
时间: 2007-5-7 20:38
不大明白楼上的说法,能再清楚点吗?
作者: sharenbujianxue
时间: 2007-5-7 20:54
我晕,这么大一个论坛,就没有一个人能帮忙看一下吗???
作者: dikex
时间: 2007-5-7 21:00
善用各个命令的参数可以大大简化问题
for /f "delims=" %%i in ('dir /b *.cpp') do xcopy /d/y/h/r %%i %%~ni.bak
作者: sharenbujianxue
时间: 2007-5-7 21:04
谢谢楼上的,麻烦能解释下吗,有些地方看不大懂,谢谢!!!
作者: dikex
时间: 2007-5-7 21:06
for /?
dir /?
xcopy /?
作者: sharenbujianxue
时间: 2007-5-7 21:09
xcopy,我看了下帮助,但能不能请你再详细的帮我解释下,
%%i %%~ni.bak 这个能遍历所有的文件吗?
看来我不愧为超级新手小菜鸟,这么简单的一个问题,我给弄得如此的复杂
作者: dikex
时间: 2007-5-7 21:12
/D:m-d-y 复制在指定日期或指定日期以后更改的文件。
如果没有提供日期,只复制那些源时间
比目标时间新的文件。
遍历文件的是dir命令,%%~ni这个的解释看for的帮助
作者: sharenbujianxue
时间: 2007-5-7 21:14
实际上,更大的问题是:我需要比较两者之间的修改日期:
1、如果.cpp的时间比.bak的时间更新,那么直接覆盖
2、如果.cpp的时间比.bak的时间晚,接受用户覆盖或是不覆盖的选择。
我如何来进行时间的比较呢?
谢谢!!!
作者: sonicandy
时间: 2007-5-7 21:26
Quote: |
Originally posted by sharenbujianxue at 2007-5-7 08:38 PM:
不大明白楼上的说法,能再清楚点吗? |
|
点右键,新建,公文包;
然后往里边复制文件就行了。
作者: sharenbujianxue
时间: 2007-5-7 21:33
15楼的真会开玩笑,谢谢!
作者: dikex
时间: 2007-5-7 22:22
@echo off
for /f "delims=" %%i in ('dir /b *.cpp') do xcopy /d/y/h/r %%i %%~ni.bak | find " 0 " && (cls & xcopy /-y/h/r %%i %%~ni.bak)
作者: colorphoto
时间: 2007-5-7 22:38
好像很复杂哦
作者: sharenbujianxue
时间: 2007-5-7 22:43
Quote: |
Originally posted by dikex at 2007-5-7 10:22 PM:
@echo off
for /f "delims=" %%i in ('dir /b *.cpp') do xcopy /d/y/h/r %%i %%~ni.bak | find " 0 " && (cls & xcopy /-y/h/r %%i %%~ni.bak) |
|
能对这句进行下详细的解释吗??谢谢!!!
作者: sharenbujianxue
时间: 2007-5-7 22:45
特别是 do xcopy /d/y/h/r %%i %%~ni.bak | find " 0 " && (cls & xcopy /-y/h/r %%i %%~ni.bak)
作者: sharenbujianxue
时间: 2007-5-7 22:52
谢谢楼上的,我明白你的意思了
因为 xcopy 在没有指定日期的时候,只赋值日期源日期比目标日期新的文件!
那么如果目标日期比源日期更新,则 xcopy 会输出“ 0 文件被复制”的提示符,通过 | + find " 0 " 就可以判断了,这样避免了直接用获取日期进行比较!
高啊,我现在才看懂,真不愧是菜鸟,BTW,谢谢楼上的,很感谢
作者: sharenbujianxue
时间: 2007-5-7 22:54
说错了哈,我的意思是,我是一只菜鸟,现在才看明白你的意思!
真是用的好!
但是,如果我非要用他们的日期来做比较,该怎么处理呢?