[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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:\
1

评分人数

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

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

TOP

~~~~~~~

TOP

  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
复制代码

TOP

反正两个文件夹最后的文件都是一样多,不然简单的 xcopy a到b  b到a。不必判断。
目的,学习批处理

TOP

少年你可以去搜索一下这些关键字:
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:
复制代码

TOP

去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

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

TOP

返回列表