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