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