标题: [文件操作] 批处理如何将指定目录下的文件替换掉另一个目录下的同名文件 [打印本页]
作者: arter369 时间: 2016-11-28 17:41 标题: 批处理如何将指定目录下的文件替换掉另一个目录下的同名文件
本帖最后由 pcl_test 于 2016-11-28 18:46 编辑
根据文件名清单,批量替换指定路径下的同一类型文件,如何实现?
举例说明:
有20个文件在 “E:\新文件” 下,
同样有20个同名文件在 “E:\图纸”下面不同的文件夹里,文件夹的深度层级也不一样。
请问,如何根据新文件清单,批量更新 “E:\图纸” 的同类型文件?
非常感谢支持。
作者: CommandBatCmd 时间: 2016-11-28 18:44
回复 1# arter369
根据文件类型,把来源中的文件批量替换到目标目录- @echo off
- set "FT=*.jpg"
- set "TD=E:\图纸"
- set "LD=E:\新文件"
- for /f "delims=" %%a in ('dir /a-d /b "%LD%\%FT%"') do (
- REPLACE /R /S "%LD%\%%~a" "%TD%"
- )
- pause
复制代码
根据文件名清单,批量替换目标文件夹中的文件- @echo off
- set "FT=文件清单.txt"
- set "TD=E:\图纸"
- for /f "delims=" %%a in (%FT%) do (
- REPLACE /R /S "%%~a" "%TD%"
- )
- pause
复制代码
作者: arter369 时间: 2016-11-28 21:07
非常感谢“CommandBatCmd”您的帮助,抱歉我的意思没表达明白:
如示例文件所示
1、新版本的文件均来自一个文件夹“新文件”,这些文件的格式不一样;
2、旧版本的文件在“图纸”下的、不同文件夹里,这些旧文件均要被来自“新文件”下的同名、同格式的文件替换掉,“名称、格式均要相同”才能被替换掉。
能否指点下,另请告知我您的微信,小小感谢下。
作者: happy886rr 时间: 2016-11-28 21:56
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /a-d /b /s E:\新文件\*.*') do (set "%%~nxa=%%a")
- for /f "delims=" %%a in ('dir /a-d /b /s E:\图纸\*.*' ) do (if defined %%~nxa (set/p=!%%~nxa! %%a <NUL© "!%%~nxa!" "%%a"))
- pause
复制代码
回复 3# arter369
作者: pcl_test 时间: 2016-11-28 22:19
- @echo off
- rem 别问我为什么只显示不替换
- set "src=E:\新文件"
- set "dst=E:\图纸"
- for /f "delims=" %%a in ('dir /a-d/b/s "%dst%"') do (
- if exist "%src%\%%~nxa" echo;copy /y "%src%\%%~nxa" "%%a"
- )
- pause
复制代码
作者: CommandBatCmd 时间: 2016-11-28 23:38
回复 3# arter369
把来源中的任意文件,批量替换到目标目录- @echo off
- set "FT=*.*"&@rem *.jpg特指全部jpg文件,*.*指所有类型的文件,*指所有文件和文件夹。
- set "TD=E:\图纸"
- set "LD=E:\新文件"
- for /f "delims=" %%a in ('dir /a-d /b "%LD%\%FT%"') do (
- REPLACE /R /S "%LD%\%%~a" "%TD%"
- )
- pause
-
复制代码
你再试试这个,并看一下上面的注释,看是不是你要的结果。
作者: arter369 时间: 2016-11-29 10:11
非常感谢三位的帮助,4楼、6楼都可以实现,5楼方案不能替换,不知道问题再哪里。
再次感谢三位,也请提供下微信号,略表下心意。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |