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

[文件操作] 批处理如何将指定目录下的文件替换掉另一个目录下的同名文件

本帖最后由 pcl_test 于 2016-11-28 18:46 编辑

根据文件名清单,批量替换指定路径下的同一类型文件,如何实现?
举例说明:
有20个文件在  “E:\新文件”  下,
同样有20个同名文件在   “E:\图纸”下面不同的文件夹里,文件夹的深度层级也不一样。

请问,如何根据新文件清单,批量更新   “E:\图纸” 的同类型文件?

非常感谢支持。

回复 1# arter369

根据文件类型,把来源中的文件批量替换到目标目录
  1. @echo off
  2. set "FT=*.jpg"
  3. set "TD=E:\图纸"
  4. set "LD=E:\新文件"
  5. for /f "delims=" %%a in ('dir /a-d /b "%LD%\%FT%"') do (
  6. REPLACE /R /S "%LD%\%%~a" "%TD%"
  7. )
  8. pause
复制代码
根据文件名清单,批量替换目标文件夹中的文件
  1. @echo off
  2. set "FT=文件清单.txt"
  3. set "TD=E:\图纸"
  4. for /f "delims=" %%a in (%FT%) do (
  5. REPLACE /R /S "%%~a" "%TD%"
  6. )
  7. pause
复制代码

TOP

非常感谢“CommandBatCmd”您的帮助,抱歉我的意思没表达明白:
如示例文件所示
1、新版本的文件均来自一个文件夹“新文件”,这些文件的格式不一样;
2、旧版本的文件在“图纸”下的、不同文件夹里,这些旧文件均要被来自“新文件”下的同名、同格式的文件替换掉,“名称、格式均要相同”才能被替换掉。

能否指点下,另请告知我您的微信,小小感谢下。

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /a-d /b /s E:\新文件\*.*') do (set "%%~nxa=%%a")
  3. for /f "delims=" %%a in ('dir /a-d /b /s E:\图纸\*.*'  ) do (if defined %%~nxa (set/p=!%%~nxa! %%a <NUL&copy "!%%~nxa!" "%%a"))
  4. pause
复制代码
回复 3# arter369

TOP

  1. @echo off
  2. rem 别问我为什么只显示不替换
  3. set "src=E:\新文件"
  4. set "dst=E:\图纸"
  5. for /f "delims=" %%a in ('dir /a-d/b/s "%dst%"') do (
  6.     if exist "%src%\%%~nxa" echo;copy /y "%src%\%%~nxa" "%%a"
  7. )
  8. pause
复制代码

TOP

回复 3# arter369

把来源中的任意文件,批量替换到目标目录
  1. @echo off
  2. set "FT=*.*"&@rem *.jpg特指全部jpg文件,*.*指所有类型的文件,*指所有文件和文件夹。
  3. set "TD=E:\图纸"
  4. set "LD=E:\新文件"
  5. for /f "delims=" %%a in ('dir /a-d /b "%LD%\%FT%"') do (
  6. REPLACE /R /S "%LD%\%%~a" "%TD%"
  7. )
  8. pause
  9.    
复制代码
你再试试这个,并看一下上面的注释,看是不是你要的结果。

TOP

非常感谢三位的帮助,4楼、6楼都可以实现,5楼方案不能替换,不知道问题再哪里。
再次感谢三位,也请提供下微信号,略表下心意。

TOP

返回列表