【发布时间】:2013-02-17 04:31:22
【问题描述】:
我目前有一个脚本可以将 temp_dir 中的所有文件移动到 dir 并处理文件。我想将其更改为批量移动 n 个文件来处理它们。通过批处理脚本实现它的最佳方法是什么。
【问题讨论】:
-
你使用的是什么平台?
标签: batch-file
我目前有一个脚本可以将 temp_dir 中的所有文件移动到 dir 并处理文件。我想将其更改为批量移动 n 个文件来处理它们。通过批处理脚本实现它的最佳方法是什么。
【问题讨论】:
标签: batch-file
我不太确定你需要什么。
您可以使用模运算暂停每 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
)
)
这可以通过一个简单的计数器来完成,该计数器会随着遇到的每个文件递增并在遇到新目录时重置为 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
)
)
【讨论】: