我可以使用一些帮助来创建批处理文件,以便将文件移动到文件夹中。我曾尝试查看其他批处理文件,并找出自己的代码,但我的情况有点独特,所以我认为我最好从一开始就服务于这里:我在一个目录中有30,000 - 140,000个文件(从来没有一个确切的数字,例如可能是78,379个文件)。然后我需要将这些文件分成子文件夹,每个子文件夹中有5000个文件。文件名不是像1、2、3、4或任何简单的东西——它们大多数是8位数的文件名,比如30024645.csv,但它们不是连续的,所以从那个文件开始,下一个可能是30024759.csv——我不希望以任何其他方式组织这些文件,而不是每个子文件夹5k。
您所需要的只是一个计数器来跟踪您移动了多少文件,一个计数器来跟踪您将文件移动到哪个文件夹,以及一个for
循环来遍历这些文件。
@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
)
)
请注意,对于文件名中包含感叹号的文件,此解决方案将失败。