Batch file 将n个文件移动到exch时间的批处理脚本

Batch file 将n个文件移动到exch时间的批处理脚本,batch-file,Batch File,我目前有一个脚本,可以将temp_dir中的所有文件移动到dir并处理文件。我想将其更改为批量移动n个文件以处理它们。通过批处理脚本实现它的最佳方法是什么。我不太确定您需要什么 您是否打算以N批处理每个文件,直到没有文件保留 或者,您是否打算只处理每个目录的前N个文件,而忽略所有其他文件 场景1:以N个批处理每个文件 可以使用模运算每N个循环暂停一次。模数计算除法后的余数。如果模数为0,则分子将被分母平均分割。它的工作原理如下: 0 % 3 = 0 1 % 3 = 1 2 % 3 = 2

我目前有一个脚本,可以将temp_dir中的所有文件移动到dir并处理文件。我想将其更改为批量移动n个文件以处理它们。通过批处理脚本实现它的最佳方法是什么。

我不太确定您需要什么

  • 您是否打算以N批处理每个文件,直到没有文件保留
  • 或者,您是否打算只处理每个目录的前N个文件,而忽略所有其他文件

场景1:以N个批处理每个文件 可以使用模运算每N个循环暂停一次。模数计算除法后的余数。如果模数为0,则分子将被分母平均分割。它的工作原理如下:

0 % 3 = 0
1 % 3 = 1
2 % 3 = 2
3 % 3 = 0
4 % 3 = 1
5 % 3 = 2
6 % 3 = 0
等等

下面是一个示例批处理脚本,其中包含一个模运算,用于暂停每个
%filesPerChunk%
循环迭代。用
.bat
扩展名保存此文件并试用

@echo off
setlocal enabledelayedexpansion

set /a "filesPerChunk=5, idx=0"

for /F "delims=" %%I in ('dir /s /b') do (
    echo Processing %%I

    set /a "idx+=1"
    set /a "mod=idx %% filesPerChunk"

    if !mod! equ 0 (
        echo --- END OF CHUNK ---
        pause
    )

)

场景2:仅处理每个目录的前N个文件 这可以通过一个简单的计数器来完成,该计数器为遇到的每个文件递增,并在遇到新目录时重置为0

@echo off
setlocal enabledelayedexpansion

set filesPerChunk=5

for /F "delims=" %%I in ('dir /s /b') do (

    if "!dir!"=="%%~dpI" (
        set /a "idx+=1"
    ) else (
        if defined dir echo ---
        set idx=0
        set "dir=%%~dpI"
    )

    if !idx! lss %filesPerChunk% (
        echo Processing %%I
    )
)

您正在使用的平台是什么?/L可能无法工作,因为我们需要/R来复制所有子目录。要求是从每个子目录复制/移动5/n个文件。@Raj-我不知道你在问什么。我用几个示例脚本更新了我的答案。两者都能满足你的需要吗?我试试这个。情况是,我有一个视频目录,我会复制到临时和进程。有时我会有20-30个文件,需要很长时间才能完成dir上的for循环。相反,我想复制一批(n个)它们,处理它们并将它们复制到另一台服务器。我不想使用robocopy移动所有文件,但循环将第一个“n”个文件从该目录移动到进程。