@echo off
setlocal enabledelayedexpansion
set "source_file=C:\path\to\source\file.ext"
set "root_folder=C:\path\to\root\folder"
REM 遍历根文件夹及其子文件夹
for /R "%root_folder%" %%D in (*) do (
REM 仅处理文件夹
if "%%~aD"=="d" (
REM 检查文件夹是否包含同名文件
if exist "%%D\%~n1.*" (
REM 生成随机文件名
set "random_name=!random!!random!!random!"
set "temp_file=%temp%\!random_name!.tmp"
REM 备份原文件
copy "%%D\%~n1.*" "!temp_file!" /Y
REM 替换文件
copy /Y "%source_file%" "%%D\%~n1.*" > nul
REM 删除临时文件
del "!temp_file!" > nul
)
)
)
echo 文件替换完成!
pause
```
请将上述脚本中的以下变量值替换为您自己的路径:
- `source_file`:源文件的完整路径,即要替换的文件。
- `root_folder`:根文件夹的完整路径,即要在其中批量替换同名文件的文件夹。
保存以上代码到一个文本文件,将其后缀名改为`.bat`(例如`replace_files.bat`),然后在Windows 7上运行这个批处理脚本。它会根据指定的源文件,批量替换不同文件夹下同名的文件,包括支持中文命名的文件夹。
这个脚本会遍历根文件夹及其子文件夹,仅处理文件夹并检查文件夹是否包含同名文件。如果存在同名文件,它会生成一个随机的临时文件名,并将原文件备份为临时文件。然后,它将源文件替换到同名文件中,并最后删除临时文件。这样可以确保在替换文件时不会丢失任何数据。