你好,能麻烦你,如果有空,请帮我写个批处理,对比2个目录,删除目录2同名文件?
目录A为客户端,目录B为补丁文件,我希望把批处理放在补丁目录,并通过拖放目录A到批处理文件运行,批处理列出目录B文件(含子文件夹),并对此目录A同一级目录中是否存在此文件...
目录A为客户端,目录B为补丁文件,我希望把批处理放在补丁目录,并通过拖放目录A到批处理文件运行,批处理列出目录B文件(含子文件夹),并对此目录A同一级目录中是否存在此文件,存在则删除目录A同名文件,并将目录B文件复制到目录A,(因为目录A为标准客户端的符文镜像连接,我不希望补丁更新的时候影响到标准客户端,所以要删除目录A的同名符文连接,并复制目录B的文件到相应位置)我先写了,不理想,只能处理根目录,不能处理子目录,在此麻烦你了,先谢谢了
展开
1个回答
展开全部
不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为xx.bat,编码选ANSI
复制粘贴到记事本,另存为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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询