批处理:如何将N个文件均分3份后剪切到3个目标文件夹

来源:百度知道 编辑:UC知道 时间:2024/05/04 06:58:43
每天C:\Files\ 文件夹下会有N个等待处理的PDF文件,我要把它们均分成3份剪切到 //FSrv02/D$/QueueA ; //FSrv02/D$/QueueB ; //FSrv02/D$/QueueC 三个目标文件夹里。
比如今天有50个PDF文件,50/3=16.6 =17(四舍五入),那么:
剪切第17个文件到//FSrv02/D$/QueueA
剪切第17个文件到//FSrv02/D$/QueueB
将剩余的16个文件 剪切到17个文件到//FSrv02/D$/QueueC
各位大虾们知道如何实现么,谢谢。
------------------------------------------------
这是在论坛上找到一个计算文件数量的脚本:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /a-d /b') do (
set /a a+=1
)
echo !a!个文件

-------------------------------------
这段代码内有一段关于文件计数的
@echo off
setlocal ENABLEDELAYEDEXPANSION
set SOURCEPATH=<修改此处为存放原始文件的路径>
set DESTINATIONPATH=<修改此处为存放合并后文件的路径>
if not exist "%SOURCEPATH%" (
echo 找不到源文件路径,请正确指定源文件所在位置
exit /b 1
)
if not exist "%DESTINATIONPATH%" md "%DESTINATIONPATH%"
del /q "%DESTINATIONPATH%"
echo 处理中

@echo off
setlocal enabledelayedexpansion
set dir_src=C:\Files
set dir_desA=//FSrv02/D$/QueueA
set dir_desB=//FSrv02/D$/QueueB
set dir_desC=//FSrv02/D$/QueueC

for /f %%i in ('dir /a-d /b "%dir_src%"') do (
set /a files+=1
)
echo 文件个数总计:!files!
set /a each=files/3,tail=files%%3
if %tail% GEQ 2 set /a each+=1

set dir_des=%dir_desA%
for /f "delims=" %%i in ('dir /a-d /b "%dir_src%"') do (
>nul copy "%dir_src%\%%i" "!dir_des!\"
>nul del "%dir_src%\%%i"
set /a copied+=1
if !copied!==%each% (
set /a copied=0,des+=1
if !des!==1 set dir_des=%dir_desB%
if !des!==2 set dir_des=%dir_desC%
)
)
echo 文件分配完成!
pause