如何编写批处理脚本以从多个目录中收集具有相同名称的文件

时间:2013-03-08 09:31:01

标签: batch-file

我有许多文件,不同,但名称相同,在许多目录中。这些目录在单个根目录中都是一个级别。 我想要一个遍历所有这些子目录的脚本,并将同名文件复制到某个目标。当然,重命名它们。

1 个答案:

答案 0 :(得分:1)

我最近有类似的要求,我写了一个脚本来做到这一点。它不仅限于同名文件或一级深层目录结构,但您可以使用它,我认为它应该符合您的需求。它采用完整的文件名,剥离当前路径前缀并将任何反斜杠转换为下划线,从而将目录结构“展平”为文件名。您只需要为脚本指定目标目录和文件掩码(第二行和第三行)。

@ECHO OFF
SET filemask=*.gif
SET target_path=out
SETLOCAL EnableDelayedExpansion
SET current_path=%CD%\
IF NOT EXIST "%target_path%" MKDIR "%target_path%"
FOR /F "tokens=*" %%G IN ('DIR /B /S %filemask%') DO (
    SET file=%%G
    :: strip current path
    SET file_new=!file:%current_path%=!
    :: convert backslashes to underscores
    SET file_new=!file_new:\=_!
    :: copy file
    COPY %%G %target_path%\!file_new! >nul
)
ENDLOCAL