@echo off setlocal enabledelayedexpansion :: 定义源目录和目标目录 set "SOURCE_DIR=%~dp0sqlservr64" set "TARGET_DIR=C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn" :: 检查源目录是否存在 if not exist "%SOURCE_DIR%\" ( echo 错误:源目录不存在 - %SOURCE_DIR% pause exit /b 1 ) :: 检查目标目录是否存在 if not exist "%TARGET_DIR%\" ( echo 错误:目标目录不存在 - %TARGET_DIR% pause exit /b 1 ) :: 请求管理员权限(如果需要) net session >nul 2>&1 if %errorLevel% neq 0 ( echo 请求管理员权限... powershell -Command "Start-Process '%~f0' -Verb RunAs" exit /b ) echo 开始强制覆盖文件... echo 源目录:%SOURCE_DIR% echo 目标目录:%TARGET_DIR% echo. :: 使用 robocopy 进行强制覆盖(推荐) :: /E - 复制子目录(包括空目录) :: /R:0 - 不重试失败的文件 :: /W:0 - 无等待时间 :: /COPYALL - 复制所有文件属性 :: /PURGE - 删除目标中源不存在的文件(谨慎使用!) :: /ZB - 使用重启模式(适合大文件) :: /NP - 不显示进度百分比 :: /NFL - 不记录文件名 :: /NDL - 不记录目录名 :: /A-:SH - 移除源文件的系统和隐藏属性(如果需要) robocopy "%SOURCE_DIR%" "%TARGET_DIR%" /E /R:0 /W:0 /COPYALL /ZB /NP /NFL /NDL :: 备用方案:使用 xcopy(如果 robocopy 不可用) :: xcopy "%SOURCE_DIR%\*" "%TARGET_DIR%\" /E /H /Y /C /Q :: 检查执行结果 if %errorlevel% lss 8 ( echo. echo 文件覆盖完成! echo 成功复制的文件数量:%errorlevel% ) else ( echo. echo 警告:复制过程中可能出现了一些错误(错误代码:%errorlevel%) echo 请检查日志或手动验证文件。 ) echo. pause