Board logo

标题: [文件操作] 对比两个文件夹里文件,找出其中一个文件夹里缺少的文件并从另一个文件夹里复制过来 [打印本页]

作者: ditto    时间: 2016-11-21 09:29     标题: 对比两个文件夹里文件,找出其中一个文件夹里缺少的文件并从另一个文件夹里复制过来

本帖最后由 ditto 于 2016-11-21 14:00 编辑

两个目录  C:\test 和 D:\test ,都没有子目录

正常情况下,两个目录文件是一样的,但是d:\test偶尔会缺少部分文件,
C:\test下的文件比D:\test文件多,
想把D:\test缺少的 文件 拷贝过来


请问如何实现?
  1. @echo off  
  2. setlocal enabledelayedexpansion
  3. del tmp.txt
  4.   for /r "c:\test" %%f in (*.*) do (
  5.      set file =%%~ff
  6.       echo %%~ff>>tmp.txt
  7.      )
  8. for /f "delims=\,tokens=*"  %%i in (c:\tmp.txt) do (
  9.       rem for /f "delims=\"  %%i in (tmp.txt) do (
  10.       rem if not exist "d:\test\%%i\%%j" copy "c:\test\%%i\%%j" "d:\test\%%i\%%j"
  11.       echo %%i %%j
  12.       )
  13. pause
复制代码
第2 部分for好像不能正常处理 只能显示c:\
作者: ditto    时间: 2016-11-21 12:26

本帖最后由 pcl_test 于 2016-11-21 12:33 编辑

麻烦哪位帮看看?多谢!想xcopy *.* d:
有很多文件已经存在了,系统会问是否覆盖:
(Yes/No/All)? 现在想对这些已经存在的文件回答全部选N,
怎么样对xcopy命令这个提示,全部自动按N?
作者: ditto    时间: 2016-11-21 16:29

~~~~~~~
作者: CommandBatCmd    时间: 2016-11-21 20:21

  1. @echo off
  2. for /f %%I in ('dir /s /b "c:\test\*.*"') do if not exist "d:%%~pnxI" (COPY /B /Y "%%~I" "d:%%~pnxI" /B >NUL)
  3. pause
复制代码

作者: hlzj88    时间: 2016-11-21 21:28

反正两个文件夹最后的文件都是一样多,不然简单的 xcopy a到b  b到a。不必判断。
作者: Spring    时间: 2016-11-22 00:09

少年你可以去搜索一下这些关键字:
1.管道 2.StdIn
要对xcopy不停的按n,如果在批处理,可以在前面加一行给他按足够的n就行
  1. @echo off
  2. (for /l %%l in (1,1,9999) do @set /p p=n<nul)|^
  3. xcopy *.* d:
  4. pause
复制代码
或者写成一行在命令行窗口里面直接运行
  1. (for /l %l in (1,1,9999) do @set /p=n<nul)|xcopy *.* d:
复制代码

作者: codegay    时间: 2016-11-22 04:30

文件件同步 site:appinn.com
https://www.baidu.com/s?ie=utf-8 ... m&oq=文件件同步
作者: terse    时间: 2016-11-22 12:02

回复 1# ditto
你加参数试下  /y
要不试下面命令?
  1. replace "C:\test\*.*" "D:\test" /u
复制代码





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