Batch file .bat以移动文件

Batch file .bat以移动文件,batch-file,move,Batch File,Move,我可能需要一些帮助来创建批处理文件,以便将文件移动到文件夹中。我曾尝试查看其他批处理文件并自己找出代码,但我的情况有点独特,因此我认为从一开始就来到这里是最好的选择: 我在一个目录中有30000到140000个文件(例如,可能是78379个文件,但从来没有一个确切的数字)。然后我需要将这些文件分割成子文件夹,每个子文件夹中有5000个文件。文件名与1、2、3、4或其他任何简单的文件名不同——大多数文件名都是8位数的文件名,如30024645.csv,但它们不是连续的,因此从该文件开始,下一个文件

我可能需要一些帮助来创建批处理文件,以便将文件移动到文件夹中。我曾尝试查看其他批处理文件并自己找出代码,但我的情况有点独特,因此我认为从一开始就来到这里是最好的选择:
我在一个目录中有30000到140000个文件(例如,可能是78379个文件,但从来没有一个确切的数字)。然后我需要将这些文件分割成子文件夹,每个子文件夹中有5000个文件。文件名与1、2、3、4或其他任何简单的文件名不同——大多数文件名都是8位数的文件名,如30024645.csv,但它们不是连续的,因此从该文件开始,下一个文件名可能是30024759.csv——我不想用任何其他方式来组织这些文件,而只是用每个子文件夹5k来组织这些文件。

您所需要的只是一个计数器跟踪您移动了多少个文件,一个计数器用于跟踪您将文件移动到哪个文件夹,以及一个
循环来迭代文件

@echo off
setlocal enabledelayedexpansion

set "source_folder=<REPLACE_ME>"
set "dest_root_folder=<REPLACE_ME>"
set "files_per_folder=5000"
set "current_folder=1"
set "file_count=0"

for %%A in ("%source_folder%\*") do (
    set /a file_count+=1
    if not exist "%dest_root_folder%\!current_folder!\" mkdir "%dest_root_folder%\!current_folder!\"
    move "%%A" "%dest_root_folder%\!current_folder!\%%~nxA" >nul
    
    if "!file_count!"=="!files_per_folder!" (
        set file_count=0
        set /a current_folder+=1
    )
)
@echo关闭
延迟扩展
设置“源文件夹=”
设置“dest\u root\u folder=”
设置“每个文件夹的文件数=5000”
设置“当前文件夹=1”
设置“文件计数=0”
对于(“%source\u folder%\*”)中的%%A,请执行以下操作(
设置/a文件\u计数+=1
如果不存在“%dest\u root\u folder%\!current\u folder!\”mkdir“%dest\u root\u folder%\!current\u folder!\”
移动“%%A”“%dest\u root\u folder%\!current\u folder!\%%~nxA”>nul
如果“!file\u count!”==“!files\u per\u folder!”(
设置文件计数=0
设置/a当前_文件夹+=1
)
)

请注意,对于文件名中包含感叹号的任何文件,此解决方案都将失败。

我确信已经有这样的示例得到了解答,那么您到底遇到了什么问题?如果不向我们展示您的代码,以及它如何无法按预期工作,您的问题将被理解为一个离题代码请求。请确保您已阅读,并阅读下的链接页面。然后根据这些信息,以及我的其他评论,你的问题在指南中有了更明确的答案。请提供你的代码。