Разбить папку с большим количеством файлов на несколько подпапок (Windows 10)
У меня есть папка с 110 000 файлов, и я хочу, чтобы эта папка была разбита на несколько подпапок, каждая из которых содержит, скажем, 3000 файлов (возможно, с помощью пакетного скрипта?). (Попытка копирования / вставки с помощью WinExplorer застревает в разделе "Подготовка к копированию".)
Например:
BigFolder
|
NewFolder
| | | | |
Sub1 Sub2 Sub3 Sub4 Sub5...
1 ответ
Я удивлен, обнаружив такой же мой случай. У меня было 30000 файлов, которые нужно было отсортировать, поэтому я задал вопрос на этой странице: быстрые методы копирования (перемещения) файлов в пакетном файле
Это скрипт Compo:
@Echo Off If /I Not "%__CD__%"=="%~dp0" PushD "%~dp0" 2>Nul||Exit/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(Task Done! Timeout -1 1>Nul
И это то, что я использую, и я немного отредактировал для этой цели:
@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
Вы можете удалить taskkill
, start
а также sc
часть при желании. Я добавил эту часть, потому что проводник и Windows Search Indexer приведут к пустой трате памяти при перемещении файлов. Я рекомендую вам запустить скрипт с правами администратора.
Попробуйте протестировать скрипт в небольшом масштабе, чтобы увидеть, работает ли он.