@echo off&setlocal enabledelayedexpansion
for /r "E:\dir2\aa" %%f in (*.*) do (
set file=%%~nxf
if not exist "E:\dir1\aa\!file!" copy /y "E:\dir2\aa\!file!" "E:\dir1\aa"
)
我已经自己解决了,和大家共享一下解决思路。
1、先获取E:\Dir2的所有文件,用for /r 的方式,将结果存在一个临时文件tmp.txt中;注意要获取全路径。就是要用%%~f扩展;
代码如:
for /r "e:\dir2" %%f in (*.*) do (
set file =%%~ff
echo !file!>>tmp.txt
)
2、读取临时文件的每一行,将字符串"E:“\Dir2"替换成"E:\Dir1";再判断该文件是否在Dir1中存在;
3、如果存在就继续;不存在就拷贝过去。
代码如:(根据实际情况选择截取哪一节)
for /f "tokens=2*,delims=\" %%i in (tmp.txt) do (
if not exist "e:\dir1\%%i\%%j" copy "e:\dir2\%%i\%%j" "e:\dir1\%%i\%%j"
)