以特定模式从文件夹复制文件

时间:2021-01-05 09:40:58

标签: batch-file copy

我有一个公司网络驱动器,里面有不同设施的文件夹,按月份分类。它看起来像这样:

\\NetworkDrive\Facility A\Category A\2020\January\File A
\\NetworkDrive\Facility A\Category A\2020\February\File A
\\NetworkDrive\Facility A\Category A\2020\January\File B
\\NetworkDrive\Facility A\Category A\2020\February\File B

\\NetworkDrive\Facility A\Category B\2020\January\File C
\\NetworkDrive\Facility A\Category B\2020\February\File C
\\NetworkDrive\Facility A\Category B\2020\January\File D
\\NetworkDrive\Facility A\Category B\2020\February\File D

\\NetworkDrive\Facility B\Category A\2020\January\File A
\\NetworkDrive\Facility B\Category A\2020\February\File A
\\NetworkDrive\Facility B\Category A\2020\January\File B
\\NetworkDrive\Facility B\Category A\2020\February\File B

\\NetworkDrive\Facility B\Category B\2020\January\File C
\\NetworkDrive\Facility B\Category B\2020\February\File C
\\NetworkDrive\Facility B\Category B\2020\January\File D
\\NetworkDrive\Facility B\Category B\2020\February\File D

我想要实现的是将所有相同的文件复制到一个文件夹中,并将 Facility、Month 和 Year 附加到文件名。结果将如下所示:

Folder A\File A_January_2020_Facility A
Folder A\File A_January_2020_Facility B
Folder A\File A_February_2020_Facility A
Folder A\File A_February_2020_Facility B

Folder B\File B_January_2020_Facility A
Folder B\File B_January_2020_Facility B
Folder B\File B_February_2020_Facility A
Folder B\File B_February_2020_Facility B

我们有 27 个不同的设施,10 个不同的文件。每个月都会添加新文件。我希望在每个月底执行此复制例程,并包含上个月从前几个月更新的所有文件。

我尝试寻找可用的工具或脚本来完成此任务,但没有取得多大成功。

我正在寻找 .bat 脚本或具有用户级安装的软件以在 Windows 10 上完成此操作。我们无法使用 Windows Powershell。

我尝试自己编写脚本,但我不擅长批处理脚本。这是我认为批处理脚本可能看起来像的 PsudoCode。

@ECHO OFF
SETLOCAL
SET "DASHBOARD_DIR=C:\Users\destpath"

SET "DEST_DIR=%DASHBOARD_DIR%\FolderA\"

SET "SOURCE_DIR=\\NetworkDrive\Facilities\"

SET "FILEA=ABC"

Foreach FacilityFolder in SOURCE_DIR
Foreach CategoryFolder in FacilityFolder
Foreach YearFolder in CategoryFolder 
Foreach MonthFolder in YearFolder
Foreach file in MonthFolder
If (file.Name == FILEA)
{
    tempfileName = file.Name + Year + Month + Facility;
    if (tempfileName not exists)
        file.CopyTo(DASHBOARD_DIR, file + Year + Month + Facility)
    else if (file.ModifiedDate > existingFile)
        file.CopyTo(DASHBOARD_DIR, file + Year + Month + Facility) --Replace
    else 
        continue;
}

0 个答案:

没有答案
相关问题