首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将包含多个文件的文件夹分解为多个子文件夹(Windows 10)

将包含多个文件的文件夹分解为多个子文件夹(Windows 10)
EN

Stack Overflow用户
提问于 2017-01-06 16:45:36
回答 1查看 9.4K关注 0票数 3

我有一个包含110.000个文件的文件夹,我想要一种方法将这个文件夹分成多个子文件夹,每个子文件夹包含3000个文件(也许有一个批处理脚本?)。(尝试使用WinExplorer进行复制/粘贴时,会在“准备复制”中出现问题。)

例如:

代码语言:javascript
运行
复制
BigFolder
  |
NewFolder
|     |    |    |    |
Sub1  Sub2 Sub3 Sub4 Sub5...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-07 01:44:18

我很惊讶地发现我也有同样的情况。我有30,000个文件需要排序,所以我在这个页面上问了一个问题:Fast methods to copy(move) files in batch file

这是Compo的脚本:

@Echo Off If /I Not "%__CD__%"=="%~dp0“PushD "%~dp0”2>Nul||退出/B SetLocal EnableDelayedExpansion Set "DirN=-1“:Check_DirN Set/A "DirN+=1”If Exist "%DirN%“GoTo Check_DirN Set "limit=700”For %A In (*.bat *.cmd *.txt) Do ( If Not Exist "%DirN%“MD "%DirN%”If /I Not "%%~nxA"=="%~nx0“RoboCopy ."%DirN%“"%%A”/MOV 1>NUL Set/A "limit-=1“If !limit!Lss 0 GoTo Check_DirN )Echo(任务完成!超时-1 1>Nul

这是我使用的,我为此编辑了一下:

代码语言:javascript
运行
复制
@Echo Off
If /I Not "%__CD__%"=="%~dp0" PushD "%~dp0" 2>Nul||Exit/B
taskkill /f /im explorer.exe >nul
taskkill /f /im SearchIndexer.exe >nul
sc stop WSearch >nul
sc config WSearch start= disabled >nul

SetLocal EnableDelayedExpansion
Set "DirN=-1"

:Check_DirN
Set/A "DirN+=1"
If Exist "%DirN%" GoTo Check_DirN
cls
echo Moving files to Directory %DirN%...
Set "limit=2999"
MD "%DirN%"
For %%A In (*.html) Do (
    RoboCopy . "%DirN%" "%%A" /MOV 1>NUL
    Set/A "limit-=1"
    If !limit! Lss 0 GoTo Check_DirN
)
Echo(Task Done!

start explorer.exe
start SearchIndexer.exe
sc config WSearch start= delayed-auto >nul
sc start WSearch >nul
Timeout -1 1>Nul

如果需要,您可以删除taskkillstartsc部件。我添加这部分是因为资源管理器和Windows Search Indexer在移动文件时会造成内存浪费。我建议您以管理员权限运行该脚本。

尝试在小范围内测试该脚本,看看它是否工作。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41501947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档