你好,能麻烦你,如果有空,请帮我写个批处理,对比2个目录,删除目录2同名文件?

目录A为客户端,目录B为补丁文件,我希望把批处理放在补丁目录,并通过拖放目录A到批处理文件运行,批处理列出目录B文件(含子文件夹),并对此目录A同一级目录中是否存在此文件... 目录A为客户端,目录B为补丁文件,我希望把批处理放在补丁目录,并通过拖放目录A到批处理文件运行,批处理列出目录B文件(含子文件夹),并对此目录A同一级目录中是否存在此文件,存在则删除目录A同名文件,并将目录B文件复制到目录A,(因为目录A为标准客户端的符文镜像连接,我不希望补丁更新的时候影响到标准客户端,所以要删除目录A的同名符文连接,并复制目录B的文件到相应位置)我先写了,不理想,只能处理根目录,不能处理子目录,在此麻烦你了,先谢谢了 展开
 我来答
qop_dob
2020-04-28 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:4039万
展开全部
不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为xx.bat,编码选ANSI
@echo off
rem 对比两个文件夹/目录下具有相同目录结构的同名文件并进行替换
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
setlocal enabledelayedexpansion
>"%tmp%\t.t" echo;!cmdcmdline!
endlocal
set "currentpath=%~dp0"
if "%currentpath:~-1%" equ "\" set "currentpath=%currentpath:~,-1%"
cd /d "%currentpath%"
>"%tmp%\j.j" echo;s=WSH.StdIn.ReadLine().replace(/^^.+?\.(bat^|cmd)" /ig,'');
>>"%tmp%\j.j" echo;WSH.echo(s.replace(/"/g,'').replace(/ (?=[a-z]:)/ig,'\r\n'));

for /f "delims=" %%a in ('type "%tmp%\t.t"^|cscript -nologo -e:jscript "%tmp%\j.j"') do (
    if exist "%%a\" (
        for /f "delims=" %%b in ('dir /a-d/b/s "%%a\"') do (
            set "af=%%b"
            setlocal enabledelayedexpansion
            set "bf=!af:%%a=%currentpath%!"
            if exist "!bf!" (
                echo;"!bf!" --^> "!af!"
                del /a /f /q "!af!"
                copy "!bf!" "!af!"
            )
            endlocal
        )
    )
)
:end
echo;%#% +%$%%$%/%@% %z%
pause
exit
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式