找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30438|回复: 7

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

[复制链接]
发表于 2016-11-21 09:29:44 | 显示全部楼层 |阅读模式
本帖最后由 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:\

评分

参与人数 1PB -30 收起 理由
pcl_test -30 未按版规发帖

查看全部评分

 楼主| 发表于 2016-11-21 12:26:01 | 显示全部楼层
本帖最后由 pcl_test 于 2016-11-21 12:33 编辑

麻烦哪位帮看看?多谢!想xcopy *.* d:
有很多文件已经存在了,系统会问是否覆盖:
(Yes/No/All)? 现在想对这些已经存在的文件回答全部选N,
怎么样对xcopy命令这个提示,全部自动按N?
 楼主| 发表于 2016-11-21 16:29:24 | 显示全部楼层
~~~~~~~
发表于 2016-11-21 20:21:37 | 显示全部楼层
  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
复制代码
发表于 2016-11-21 21:28:20 | 显示全部楼层
反正两个文件夹最后的文件都是一样多,不然简单的 xcopy a到b  b到a。不必判断。
发表于 2016-11-22 00:09:15 | 显示全部楼层
少年你可以去搜索一下这些关键字:
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:
复制代码
发表于 2016-11-22 04:30:20 | 显示全部楼层
发表于 2016-11-22 12:02:30 | 显示全部楼层
回复 1# ditto
你加参数试下  /y
要不试下面命令?
  1. replace "C:\test\*.*" "D:\test" /u
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 14:12 , Processed in 0.020905 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表