标题: [文件操作] 批处理怎样同步文件夹? [打印本页]
作者: zhanglei1371 时间: 2014-1-29 22:44 标题: 批处理怎样同步文件夹?
本帖最后由 zhanglei1371 于 2014-1-31 23:44 编辑
各位好,想求助个文件夹内文件同步问题,源文件夹是C:\源 文件夹,目标文件夹是优盘根目录中,一个名为“同步 文件夹”的文件夹,要求如下:
1 优盘盘符插在电脑上显示的有可能是E之后的任一盘符,此处自动查找定位到此目录,处理包括子目录中的所有文件(注意文件夹名中存在的空格);
2 如果源文件夹中存在同步文件夹中没有的文件,则按目录结构复制过去;但是,有些文件命名是日期+空格+文件名的形式,可能会出现前半部分不同,后半部分相同的情况,如2014-01-23 ABC.DOC和2014-01-28 ABC.DOC,这时就将前者删去,将后者复制过去,否则不动,保留日期最新的;
3 文件名称完全相同且大小也完全相同的不变;
4 文件名相同的保留体积较大的,删除体积小的;
对于二楼的答案,太粗糙了,还需要手动选择,而且删除时没有针对性,另外复制时目录层次结构不对应,不太符合需要。最好是双击后自动按要求完成,不需要手动过程。
先谢过各位了!
作者: 飞翔的小鸟 时间: 2014-1-30 17:57
本帖最后由 飞翔的小鸟 于 2014-1-30 18:02 编辑
菜鸟给你写一个.呵呵,.就这几行都累死我了
注意啊,如果你要复制2014-1-1 abc.doc 那你你优盘里所有目录下带有abc.doc的文件都会被删除.比如cabc.doc
@echo off
set /p disk=请输入要同步目标盘符例如d,e,f
if not defined disk goto end
for /f "delims=" %%b in ('xcopy /s/e/d/l C:\源文件夹 %disk%:\同步文件夹\') do (
for /f "tokens=2 delims= " %%c in ("%%~nxb") do del /s/f/q/a %disk%:\同步文件夹\*%%c
)
xcopy /s/e/d/h/v/r C:\源文件夹 %disk%:\同步文件夹\
:end
作者: zhanglei1371 时间: 2014-1-30 23:44
本帖最后由 zhanglei1371 于 2014-1-31 00:02 编辑
回复 2# 飞翔的小鸟
呵呵,写的太简单了,远远没有达到我的需要,不过还是感谢帮助@
我使用多重if嵌套
if中包含for.for中再包含if,if中再包含if或for,结果发现括号就不对了,也许批处理不支持这么多的嵌套...
作者: binghejin 时间: 2014-1-31 23:18
本帖最后由 binghejin 于 2014-2-2 16:13 编辑
明天帮你写,不过我也很菜鸟,努力试试,也算是练习了。
作者: binghejin 时间: 2014-2-2 16:11
本帖最后由 binghejin 于 2014-2-2 16:21 编辑
用了一天的时间写完,又用了半天的时间完善、测试,似乎还不是很完善,处理起来效率不是很高,请大神们再修改!
我把反向处理专门设置了一个选择项,如果需要默认就可以反向处理的的话,就把那个选择项去掉就好了。复制代码
作者: 飞翔的小鸟 时间: 2014-2-3 09:33
呵呵,回头加个自动判断u盘的..你要删除要个什么样的针对性?还有你说另外复制时目录层次结构不对应....这要是xcopy复制的目录还有不对应的...那批处理应该解决不了你的问题.
论坛里有同步文件的批处理,你可以搜索一下参考.
作者: zhanglei1371 时间: 2014-2-3 22:48
回复 5# binghejin
非常感谢您的帮助!!!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |