Board logo

标题: [文本处理] 批处理怎样查找出修改过的文件夹? [打印本页]

作者: FU8989    时间: 2010-9-9 23:29     标题: 批处理怎样查找出修改过的文件夹?

在D:\AAA文件夹里有 "A文件夹" "B文件夹" "C文件夹" "D文件夹" ......有多个文件夹 这些文件夹里都是存放文本或者软件的 经常需要复制备份到其它地方 为了不重复复制这些文件夹 只选择修改过的或者容量变化的文件夹进行复制   请问批处理怎样显示出修改过的或者是容量变化的文件夹? 谢谢各位指教
作者: FU8989    时间: 2010-9-9 23:30     标题: 回复 1楼 的帖子

补充 批处理能显示出始终没有变化的文件夹也行  没有变化就是没有添加的 没有删除的 没有修改过的)
作者: zqz0012005    时间: 2010-9-9 23:36

没有你说的那么麻烦,xcopy自己会处理
  1. xcopy /s/e/d/y/c D:\AAA E:\AAA_BAK\
复制代码

作者: FU8989    时间: 2010-9-9 23:54     标题: 回复 3楼 的帖子

师傅 谢谢 能说明一下吗
D:\AAA 文件夹里有几十个G容量呀  全部复制要很久的 我是说只复制变化的文件夹行吗
作者: FU8989    时间: 2010-9-9 23:57     标题: 回复 4楼 的帖子

补充 不一定复制 要求批处理显示出 有几个文件夹变化了
作者: BAT1    时间: 2010-9-9 23:59     标题: 回复 4楼 的帖子

你可以先在其他盘上用几个小文件做个小试验啊。
作者: FU8989    时间: 2010-9-10 00:07     标题: 回复 6楼 的帖子

师傅谢谢 试验也不会达到目的的 因为原来备份好的文件夹里有"A B C "  现在备份前文件夹里删除了A  这样复制过去肯定是有A B C  我的要求是备份好了是BC  能做到吗
作者: BAT1    时间: 2010-9-10 00:14

我有点晕  还是先在群里说清楚吧。
作者: FU8989    时间: 2010-9-10 00:16     标题: 回复 8楼 的帖子

群号多少 谢谢师傅
作者: BAT1    时间: 2010-9-10 00:21     标题: 回复 9楼 的帖子

我在1群
http://bbs.bathome.net/redirect. ... o=lastpost#lastpost
作者: FU8989    时间: 2010-9-10 00:23     标题: 回复 10楼 的帖子

加我行吗 562718523
作者: FU8989    时间: 2010-9-10 00:39     标题: 回复 10楼 的帖子

师傅谢谢  我试了一下 是没有重复复制文件夹 但是不是我的目的 我的目的是 复制后全部更新文件夹 D盘有A B文件夹 复制过去只能有AB文件夹 不管原来E盘里多少个  复制好后 只能有AB文件夹
作者: FU8989    时间: 2010-9-10 06:15     标题: 回复 12楼 的帖子

等待高手解决 ..............
作者: FU8989    时间: 2010-9-10 06:21     标题: 回复 3楼 的帖子

版主大人 我的问题能解决吗 谢谢
我的目的是 第一次复制盘有A B C三个文件夹 复制过去有ABC 文件夹 D盘删掉A文件夹后进行第二次复制过去 复制好后 E盘只能有AB文件夹
作者: pdanniel66    时间: 2010-9-10 06:55

Reference solution:
(1) xxcopy
(2) robocopy
above tools will delete the source directories/files after deleted.
作者: FU8989    时间: 2010-9-10 07:16     标题: 回复 15楼 的帖子

谢谢师傅 本人水平有限 看不懂 能解释一下吗 能不能写完整给我 麻烦你了
作者: leap    时间: 2010-9-10 10:24

其实你只要去下个文件夹同步软件就可以了。。。
批处理实现 没高手来解答
等一年也是一样的
作者: FU8989    时间: 2010-9-10 10:39     标题: 回复 17楼 的帖子

师傅谢谢 能同步到文本里面吗 比如 D:\AAA.TXT有"我们"    E:\AAA.TXT有"工作"
以D:\AAA.TXT有"我们"主同步对象  同步后 E:\AAA.TXT有"工作" 里的"工作"会变为"我们"吗  D盘和E盘文本名称都是AAA
作者: zqz0012005    时间: 2010-9-10 23:39

  1. @echo off
  2. set "SRC=D:\AAA"
  3. set "BAK=E:\AAA_BAK"
  4. xcopy /s/e/d/y/c "%SRC%" "%BAK%\"
  5. cd /d "%BAK%"
  6. for /f "tokens=2 delims=:" %%a in ('xcopy /s/e/h/l * \nul\') do (
  7.     if "%%~$SRC:a"=="" echo del /a/f "%%a"
  8. )
  9. pause
复制代码
没有处理 备份中存在而源目录中已删除的文件夹。但文件夹是不占用空间的,勉强可以将就。
正在考虑进一步完善的方法。
作者: FU8989    时间: 2010-9-11 22:32     标题: 回复 19楼 的帖子

谢谢版主大人                     .
作者: czjt1234    时间: 2010-9-13 17:14

实在没能理解楼主的意思
作者: FU8989    时间: 2010-9-13 17:38     标题: 回复 21楼 的帖子

谢谢                      .
作者: powerbat    时间: 2010-9-16 22:43     标题: 回复 19楼 的帖子

for /? 的帮助中有:
     %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩充
                   到找到的第一个完全合格的名称。如果环境变量名
                   未被定义,或者没有找到文件,此组合键会扩充到
                   空字符串

以前一直不明白,原来%~$PATH:I 是这样用的,学习了。
作者: bluewing009    时间: 2010-9-17 00:01

看回帖感觉晕晕的接不上…… 我的思路(无法判断文件修改,仅是文件增减):用dir列出所有文件名,findstr与前一次的对比不同即可。
作者: FU8989    时间: 2010-9-17 17:13     标题: 回复 24楼 的帖子

谢谢                             .




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