如何让Robocopy使用%computername%模糊匹配文件而非精确匹配
实现Robocopy模糊匹配文件名的方案
原命令里直接用%computername%只能精确匹配,要实现类似D5505匹配02131924-5505的效果,核心是把计算机名处理成带通配符的匹配模式,结合Robocopy的通配符支持来实现:
方法1:动态提取计算机名的目标匹配段(通用场景)
如果你的计算机名是「前缀+数字」格式(比如D5505),可以先截取数字部分,再用通配符包裹实现模糊匹配:
@echo off :: 截取计算机名从第2位开始的部分,提取出5505 set "MATCH_STR=%COMPUTERNAME:~1%" robocopy \\source\folder\ c:\destination *%MATCH_STR%* /MIR /MOT:1
这个脚本会自动匹配所有文件名包含5505的文件,不管字符在文件名的哪个位置。
方法2:精准模糊匹配(针对特定格式)
如果只需要匹配-数字后缀的文件(比如你的示例02131924-5505),可以把通配符设置得更精准:
@echo off set "MATCH_STR=%COMPUTERNAME:~1%" robocopy \\source\folder\ c:\destination *-%MATCH_STR%* /MIR /MOT:1
这样只会匹配文件名中包含-5505的文件,避免误匹配其他带相同数字的文件名。
注意事项
/MIR参数会同步删除目标目录中源目录不存在的文件,确认你的业务场景需要这个特性再保留/MOT:1会每分钟监控源目录变化,持续执行同步,不需要实时监控可以去掉这个参数- 如果计算机名格式不固定,你可以调整
%COMPUTERNAME:~1%的截取位数,或者用更复杂的字符串处理提取目标匹配段
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

