根据扩展名批量创建文件夹并将文件移动到其中

根据扩展名批量创建文件夹并将文件移动到其中

我有一个如下所示的目录结构:

Folder A
 A.PDF
 A_1.TIF
 A_2.TIF
 A_3.TIF

Folder B
 B.PDF
 B_1.TIF
 B_2.TIF
 B_3.TIF

Folder C
 C.PDF
 C_1.TIF
 C_2.TIF
 C_3.TIF

我想要做的是让脚本将 PDF 和 TIFF 排序到具有特定标题的单独文件夹中,例如:

Folder A
 Representation_1
  A.PDF
 Preservation_1
  A_1.TIF
  A_2.TIF
  A_3.TIF

我使用以下脚本读取文件的名称,并根据文件名中的字符串将它们分类到新文件夹中。我希望它可以被改造以执行相同的操作,但使用文件扩展名:

@echo off
setlocal EnableDelayedExpansion

REM Put here the path where the files are:
set "Source=%~dp0"

for %%a in ("%Source%\*") do (
set "File=%%~na"
for /d %%b in ("%Source%\*") do (
set "Folder=%%~nb"
If "!File:~0,18!"=="!Folder:~0,18!" Move "%%a" "%%b"
)
if Exist "%%a" md "!Source!\!File:~0,18!"& move /y "%%a" "!Source!\!File:~0,18!"
)

答案1

如果我没理解错的话,应该是这样的。浏览源的子文件夹,如果子文件夹中有 pdf 文件,则创建一个名为 Representation_1 的文件夹,并将所有 pdf 文件移动到此文件夹。如果有 tiff 或 tif 文件,则将它们移动到子文件夹内名为 Preservation_1 的文件夹中。

@echo off

set Source=%userprofile%\desktop\test

pushd "%Source%"

for /f "delims=" %%a in ('dir /b /ad *') do (
                                             dir "%%a\*.pdf">nul && if not exist "%%a\Representation_1" md "%%a\Representation_1"
                                             dir "%%a\*.tif*">nul && if not exist "%%a\Preservation_1" md "%%a\Preservation_1"
                                             for /f "delims=" %%b in ('dir /b /a-d %%a\*') do (
                                                                                               if /i "%%~xb"==".pdf" move "%%a\%%~b" "%%a\Representation_1"
                                                                                               if /i "%%~xb"==".tiff" move "%%a\%%~b" "%%a\Preservation_1"
                                                                                               if /i "%%~xb"==".tif" move "%%a\%%~b" "%%a\Preservation_1"
                                                                                              ) 
                                            )
popd
exit

在此处输入图片描述

相关内容