我现在有一个脚本可以将temp_dir中的所有文件移动到dir和处理文件。我想将它更改为批量移动n个文件来处理它们。通过批处理脚本实现它的最佳方法是什么。
发布于 2013-02-17 04:55:42
我不太确定你需要什么。
场景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
)
)
https://stackoverflow.com/questions/14917997
复制相似问题