组文件同样基于尺寸为我使用下面的命令来生成基于名称的文件列表中的组

问题描述:

的“N”数字......组文件同样基于尺寸为我使用下面的命令来生成基于名称的文件列表中的组

dir [folder_location] /b >[output_file_name.txt] 

我如何将其整合到“N”组这样每个组的总大小是相似的......?

[更新]例如:我必须给100个人提供1000个文件才能重新编辑。我希望他们每个人总共获得大约相同数量的文本进行编辑。这样没有人太幸运,太幸运了。

查看dir/o:s选项。要将文件分组在一起,您必须使用for /f循环对信息进行一些解析,使用%%~zA检查文件的大小输出,然后在该位置创建分隔符。

下面是一个例子,它将输出filepath = size,不包括目录,并按从大到小排序。

for /f "usebackq delims=" %%A in (`dir /b /o:-s /a:-d`) do echo.%%~dpnA = %%~zA 
+0

我已经更新了这个例子,请你检查一下。 –

,通过大小文件组范围
第一次尝试(事实证明,这是不是OP想要的东西)

这是一种方法。您可以根据需要调整组定义。重要的是,该组限制中降序数字顺序列出,并在最后一组必须为0。

@echo off 
setlocal 
set "folder=test" 
set "out=fileGroups.txt" 
(
    pushd "%folder%" 
    for /f "eol=: delims=" %%F in ('dir /b /a-d /os "*"') do (
    set "class=" 
    for %%A in (
     "100000 [>= 100,000]  " 
     "10000 [10,000 - 99,999] " 
     "1000 [1,000 - 9,999] " 
     "100  [100 - 999]  " 
     "0  [< 100]   " 
    ) do for /f "tokens=1*" %%B in (%%A) do (
     if not defined class if %%~zF geq %%B (
     echo %%C %%~nxF 
     set class=1 
    ) 
    ) 
) 
    popd 
)>"%out%" 
type "%out%" 


划分文件成n组大致相等的总文件长度
的第二次尝试(此是OP所要求的)

通过在行号上使用模(余数)运算符,将所有文件分配到组很简单。这些文件可以简单地按大小进行排序,但随后的第一组将总是在任何一组ñ最小的文件,并在最后一组将获得最大的。这些团体将不公平。

假设有一个随机分布的文件大小,想要的是旋转哪个组获得最小和最大的任何特定组n。这个解决方案在数学上有点令人惊讶。

以下代码将数字1到25分配给5个不同组中的一个,将该数字写入组文件。每个组的总和是65

@echo off 
setlocal enableDelayedExpansion 
del group*.txt 
for /l %%N in (1 1 25) do (
    set /a "group=((%%N-1)+(%%N-1)/5)%%5+1" 
    echo %%N >>group!group!.txt 
) 

最终的答案简单地应用上述的文件列表,按大小排序。这些名字通过FINDSTR传送给每个文件分配一个“行号”。由于列表按文件大小排序,因此“行号”与文件大小排序相同。

@echo off 
setlocal disableDelayedExpansion 
set "inFolder=test" 
set "outFolder=groups" 
set "groups=5" 
pushd "%inFolder%" 
2>nul del "%outFolder%\group*.txt" 
for /f "tokens=1* delims=:" %%A in ('dir /b /a-d /os "*"^|findstr /n "^"') do (
    set "file=%%B" 
    set /a "group=((%%A-1)+(%%A-1)/groups)%%groups+1" 
    setlocal enableDelayedExpansion 
    >>"!outFolder!\group!group!.txt" echo !file! 
    endlocal 
) 
popd 
+0

我已更新示例,请检查。 –

+0

@DebajyotiDas - 我明白你的要求了。我已经更新了我的答案。 – dbenham