Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理脚本,用于将每组n个文件移动到不同的新文件夹_Windows_Batch File_Command Line - Fatal编程技术网

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

Windows 批处理脚本,用于将每组n个文件移动到不同的新文件夹,windows,batch-file,command-line,Windows,Batch File,Command Line,我试着把文件按一定的顺序分组,这样我就可以压缩它们了。我的文件夹中有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 "

我试着把文件按一定的顺序分组,这样我就可以压缩它们了。我的文件夹中有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
命令以实际启用
md
move
命令


注意:您可以使用
/o
开关选择文件的排序顺序。有关详细信息,请参见
dir/?

若要获得有关代码的帮助,请显示您的代码。我没有任何代码可供使用,我正在使用我在上面添加链接的问题中的代码。我不熟悉批处理脚本,我正在尝试这样做,以便我可以上传反馈给学生关于我的突然在线课程。这不是一个免费的代码编写服务,因此,在您编写一些显示特定问题的代码之前,我们无法帮您修复它。此外,文件没有特定的顺序,您看到它们的顺序与您作为目录查看器使用的任何设置有关。我只是想寻求帮助,并认为发布我编写的代码(主要使用上面链接中的代码)不会有多大帮助。我已经添加了如果您启用了该帮助,我所拥有的,但您不会因此使用它<代码>fcount也必须延迟。(你忘了移动文件)