繁体   English   中英

批处理脚本将每组 n 个文件移动到不同的新文件夹

[英]Batch script to move each set of n files to different new folders

我正在尝试对按某种顺序排列的文件进行分组,以便我可以压缩它们。 我的文件夹中有 m*n 个文件,并希望将 n 个文件移动到 m 个文件夹,以便它们按字母顺序排列(或创建日期的顺序,以可行的为准)。 所以对于文件 {A,B,C,D,E,F} 我希望创建两个新文件夹 1 和 2,这样 1 包含 {A,B,C} 和 2 包含 {D,E,F}。 如果有代码可以在 mac 上做同样的事情,那也很棒,但我主要是想在 Windows 上做这件事。

我发现了一个类似的问题,但是我无法在循环中创建新文件夹或将文件移动到它们。

@echo off
set /a "filesPerChunk=3, idx=0"
set /a fcount=1

for /F "delims=" %%I in ('dir /a-d /b') do (
    echo Processing %%I
    set /a "idx=idx+1"
    set /a "mod=idx %% filesPerChunk"
    if !mod! equ 0 (
    md File-%fcount%
        echo --- END OF CHUNK %fcount% ---
        pause
    )
    move I File-%fcount%
    if !mod! equ %filesPerChunk%-1(
    set /a fcount+=1
    )
)

我试图从 fcount 中提取值来创建新文件夹,但正如我所提到的,我没有很多编写批处理脚本的经验,所以我不知道这是否有意义。

编辑:所以我不得不在这里和那里移动一些命令,因为我意识到如果我在创建文件时只进行最后检查,我将无法移动文件,但我不确定它是否有效

我自由地稍微简化了你的逻辑:

@echo off
setlocal enabledelayedexpansion

set "filesPerChunk=3"
set "fcount=0"
set idx=0

for /F "delims=" %%I in ('dir /a-d /b') do (
    REM echo Processing %%I
    set /a idx=idx %% filesperchunk +1
    if !idx! equ 1 set /a fcount+=1
    ECHO md File-!fcount! 2>nul
    ECHO move "%%I" "File-!fcount!\"
    REM pause
)

在验证它执行您想要的操作后,删除两个ECHO命令以实际启用mdmove命令。

注意:您可以使用/o开关选择文件的排序顺序。 dir /? 详情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM