使用 BAT 根据文本中的文件名列表查找指定目录下所有文件夹和子文件夹中的匹配项并使用新文件替换

前提:1.一个装有新文件的A文件夹,没有层级结构2.目标目录B下包含大量文件夹和子文件夹需求:1.根据A文件夹中的文件生成一个文本文件i,包含文件名和扩展名2.根据生成的... 前提:
1. 一个装有新文件的 A 文件夹,没有层级结构
2. 目标目录 B 下包含大量文件夹和子文件夹

需求:
1. 根据 A 文件夹中的文件生成一个文本文件 i,包含文件名和扩展名
2. 根据生成的这个文本文件对 B 目录搜索匹配项
3. 如果查到匹配项,就把 A 文件夹中的对应文件复制过去并覆盖目标目录中的原文件
4. 如果没有查到匹配项则不作提示
5. 遍历完成后输出一个文本文件 j,包含所有未复制过去的文件的名称
展开
 我来答
qop_dob
2019-08-16 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:4006万
展开全部
@echo off
rem 将一个目录里的文件替换掉另一个目录下的同名文件
set #=Any question&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$% %z%
cd /d "%~dp0"
set "folder1=D:\test\A"
set "folder2=D:\test\B"
set "txtfile=lost.txt"
type nul>"%txtfile%"
for /f "delims=" %%a in ('dir /a-d/b "%folder1%"') do (
    set "n="
    for /f "delims=" %%b in ('dir /a-d/b/s "%folder2%"') do (
        if /i "%%~nxa" equ "%%~nxb" (
            set /a n+=1
            echo;"%folder1%\%%~nxa" --^> "%%b"
            copy /y "%folder1%\%%~nxa" "%%b"
        )
    )
    if not defined n (>>"%txtfile%" echo;%%a)
)
echo;%#% +%$%%$% %z%
pause
追问
可以运行,但总提示“拒绝访问”……我已经用管理员身份运行了,还是不行……也没有其他程序占用文件,何解?
【编辑】
不知为何原文件和新文件都变成只读属性了,改了就好了。谢谢了!
追答
按运行后窗口中的提示联系我
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式