如何用cmd对比两个文件夹文件名并复制不匹配文件至新文件夹?
用CMD对比文件夹并移动/复制不匹配文件
场景示例
文件夹1:
Filename1.pdf Filename2.pdf Filename3.tiff Filename4.jpg文件夹2:
Filename1.pdf Filename2.pdf Filename3.tiff Filename4.jpg Filename5.pdf Filename6.jpg目标:将文件夹2中独有的
Filename5.pdf、Filename6.jpg移动/复制到文件夹3
操作步骤
1. 定义文件夹路径
先在CMD里设置三个文件夹的绝对路径(替换成你自己的实际路径,路径含空格时必须加引号):
set "Folder1=C:\你的文件夹1路径" set "Folder2=C:\你的文件夹2路径" set "Folder3=C:\你的目标文件夹3路径"
如果目标文件夹3还没创建,可先执行这句自动创建(已存在则忽略错误):
mkdir "%Folder3%" 2>nul
2. 复制不匹配文件到目标文件夹
执行以下命令,将文件夹2中独有的文件复制到文件夹3:
for %%f in ("%Folder2%\*") do if not exist "%Folder1%\%%~nxf" copy "%%f" "%Folder3%\"
- 说明:
%%~nxf用于提取文件的完整文件名(含扩展名),if not exist判断该文件是否在文件夹1中存在,不存在则执行复制。
3. 移动不匹配文件到目标文件夹
如果需要移动而非复制,把命令里的copy换成move即可:
for %%f in ("%Folder2%\*") do if not exist "%Folder1%\%%~nxf" move "%%f" "%Folder3%\"
4. 反向查找(文件夹1中独有的文件)
要是你需要找出文件夹1里有、但文件夹2没有的文件,只需交换Folder1和Folder2的位置:
for %%f in ("%Folder1%\*") do if not exist "%Folder2%\%%~nxf" copy "%%f" "%Folder3%\"
注意事项
- 以上命令是批处理脚本格式(保存成
.bat文件双击运行),如果直接在CMD窗口中输入,需把变量里的%%f改成%f,比如:for %f in ("C:\你的文件夹2路径\*") do if not exist "C:\你的文件夹1路径\%~nxf" copy "%f" "C:\你的目标文件夹3路径\"
内容的提问来源于stack exchange,提问作者Mr UK
相关产品推荐
相关产品推荐

