在路径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
答案 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
中的结果计数为1
,xcopy
找到目标子目录中的文件(如果它已经不存在则可以方便地创建子目录),使用/y
覆盖任何同名的现有文件>nul
,使进程无声。
否则,报告目录名和文件数。