分批计算每个子文件夹中的多个pdf文件

时间:2018-04-04 12:51:45

标签: batch-file for-loop

在路径U:\ test \ 0014 *下我有99个文件夹,每个文件夹分别有2个子文件夹MASTER和DERIVATIVE_COPY。使用以下脚本,我尝试计算MASTER文件夹中的PDF数量。如果只有一个.pdf文件,我想将其复制到DERIVATIVE_COPY文件夹。如果MASTER中有0或> 1 .pdf,我只想显示它们的数量。应对99个文件夹中的每个文件夹执行此操作。

@echo off
setlocal enabledelayedexpansion

for /R  U:\test\0014\*\MASTER %%i in (*.pdf) do (
set /a anzahl+=1
)

if !anzahl! EQU 1 ( echo !anzahl! ) 
if NOT !anzahl! EQU 1 ( echo !anzahl! ) 
pause

1 个答案:

答案 0 :(得分:3)

@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "sourcedir=U:\sourcedir"

for /f %%i in ('dir /ad /s/b "%sourcedir%\master*"') do IF /i "%%~nxi"=="MASTER" (
 SET /a found=0
 FOR %%x IN ("%%i\*.pdf") DO SET /a found+=1
 IF !found!==1 (
  XCOPY /y "%%i\*.pdf" "%%i\..\derivative_copy\" >nul
 ) ELSE (
  ECHO !found! .pdf files found IN "%%i"
 )
)

GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。

首先,执行dir以获取"文件的目录列表"在指定树中启动master的名称。使用/ad仅选择目录名称。只接受" name + extension"是master(无视案例)

对于找到的每个目录名,将found设置为0,然后为目录found中找到的每个.pdf文件增加%%i

如果found中的结果计数为1xcopy找到目标子目录中的文件(如果它已经不存在则可以方便地创建子目录),使用/y覆盖任何同名的现有文件>nul,使进程无声。

否则,报告目录名和文件数。