批处理脚本问题:带通配符的目录间通配符文件复制
解决批处理脚本的文件复制问题
首先咱们理清你的需求:根据输入的测试编号%M%,创建新目录E%M%,然后把Approved文件夹下所有以%M%开头的子目录里的所有文件,复制到这个新目录中。
你的原脚本存在两个核心问题:
- 目标路径里用了通配符
E%M%*,系统无法识别明确的目标目录 - 直接用
COPY命令处理目录通配符时,没法很好地遍历所有匹配的子目录
下面是修正后的脚本,用FOR /D循环遍历所有符合前缀的目录,再逐个完成文件复制:
@echo off SET /P M=ENTER THE TEST # REM 创建目标目录,引号避免路径含空格的问题,2>NUL屏蔽目录已存在的错误提示 MKDIR "S:\Photometric\Experimental\E%M%" 2>NUL REM 遍历Approved下所有以%M%开头的子目录 FOR /D %%G IN ("S:\Photometric\Approved\%M%*") DO ( REM 复制当前目录下的所有文件到目标目录,末尾反斜杠明确标记是目录 COPY "%%G\*.*" "S:\Photometric\Experimental\E%M%\" ) echo 文件复制完成! pause
额外说明:
FOR /D %%G IN (...):专门用于遍历目录,%%G会依次保存每个匹配%M%*的目录完整路径- 如果需要递归复制子文件夹(包括空文件夹),可以把
COPY命令替换为:XCOPY "%%G\*.*" "S:\Photometric\Experimental\E%M%\" /E /H,其中/E表示复制所有子目录,/H表示复制隐藏文件和系统文件 - 要是只需要复制特定扩展名的文件,把
*.*改成对应通配符即可,比如*.png只复制图片文件
内容的提问来源于stack exchange,提问作者Phil McCarthy
相关产品推荐
相关产品推荐

