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