Windows 批处理脚本,用于将每组n个文件移动到不同的新文件夹
我试着把文件按一定的顺序分组,这样我就可以压缩它们了。我的文件夹中有m*n个文件,希望将n个文件移动到m个文件夹中,以便按字母顺序排列(或按创建日期顺序排列,以可行的为准)。因此,对于文件{A,B,C,D,E,F},我希望创建两个新文件夹1和2,其中1包含{A,B,C},2包含{D,E,F}。如果有代码可以在mac上做同样的事情,那也太好了,但我主要希望在windows上做这件事 我找到了一个文件夹,但是我无法在循环中创建新文件夹或将文件移动到其中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 "
@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也必须延迟。(你忘了移动文件)