You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写批处理程序复制带100后缀的嵌套文件夹及全部文件

批量复制深层嵌套的*100文件夹及内部内容

原代码的问题在于xcopy "\\xx.xx.xx.xx\live_projects\PWD\*100" %PWD_drive_100%仅匹配顶层目录中以100结尾的文件或文件夹,且当存在匹配的文件时,xcopy会优先处理文件,导致深层嵌套的*100文件夹未被正确复制。

修正后的批处理代码

@echo off

:: 格式化时间变量,避免小时位为单数字时出现空格
set hour=%time:~0,2%
if "%hour:~0,1%"==" " set hour=0%time:~1,1%

:: 定义备份目标路径
set PWD_drive_100=E:\PWD_BACKUP_\PWD_100_%date:~10,4%_%date:~4,2%_%date:~7,2%_%hour%_%time:~3,2%

:: 创建目标根目录(如果不存在)
if not exist "%PWD_drive_100%" mkdir "%PWD_drive_100%"

:: 递归遍历源路径下所有以100结尾的文件夹
for /r "\\xx.xx.xx.xx\live_projects\PWD" %%d in (*100) do (
    :: 判断当前遍历项是否为文件夹
    if exist "%%d\" (
        :: 提取源文件夹相对路径,保留目录结构
        set "rel_path=%%~pd"
        setlocal enabledelayedexpansion
        set "rel_path=!rel_path:\\xx.xx.xx.xx\live_projects\PWD\=!"
        :: 创建对应目标子目录(忽略已存在的报错)
        mkdir "%PWD_drive_100%\!rel_path!" 2>nul
        :: 复制当前*100文件夹内的所有内容到目标路径
        xcopy /s /c /e /h /i /r /y "%%d\*" "%PWD_drive_100%\!rel_path!%%~nxd\"
        endlocal
    )
)

echo 备份完成
pause

关键说明

  • for /r "\\xx.xx.xx.xx\live_projects\PWD" %%d in (*100):递归遍历源路径下所有以100结尾的项目(文件和文件夹)
  • if exist "%%d\":仅筛选处理文件夹(文件夹路径末尾会自动带反斜杠,文件则不会)
  • 延迟变量扩展(enabledelayedexpansion):解决循环中路径变量的动态解析问题,确保相对路径正确提取
  • xcopy /s /c /e /h /i /r /y:完整复制文件夹内所有内容,包含子目录和隐藏文件,自动创建目标文件夹

内容的提问来源于stack exchange,提问作者UIsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:01:09