2017-01-06 4 views
0

У меня есть папка с 110 000 файлами, и я хочу, чтобы разбить эту папку на несколько подпапок, содержащих, по меньшей мере, 3000 файлов (возможно, с партийным скриптом?). (Попытка копия/паста с WinExplorer застревает в разделе «Подготовка к копированию».)Перерыв папки со многими файлами в несколько вложенных папок (Windows 10)

Например:

BigFolder 
    | 
NewFolder 
|  | | | | 
Sub1 Sub2 Sub3 Sub4 Sub5... 
+1

см. Http://stackoverflow.com/questions/41489945/fast-methods-to-copymove-files-in-batch-file - просто измените 'limit' – Magoo

+0

... и' "% DirN%" 'на' «NewFolder \ Sub% DirN%» ' – Compo

+0

Похоже, что последние 2 скрипта просто повторяют копирование одной и той же первой партии файлов в разных папках ... – greektranslator

ответ

2

Я с удивлением обнаружил тот же случай шахты. У меня было 30000 файлов, которые должны быть отсортированы, поэтому я задал вопрос на этой странице: Fast methods to copy(move) files in batch file

Это Compo «s сценарий:

@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 часть если желательный. Я добавил эту часть, потому что explorer и Windows Search Indexer будут вызывать ненужную память при перемещении файлов. Я рекомендую запустить сценарий с правами администратора.

Попробуйте протестировать сценарий в небольшом масштабе, чтобы убедиться, что он работает.

+0

Да, это работало :) – greektranslator