Я с удивлением обнаружил тот же случай шахты. У меня было 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 будут вызывать ненужную память при перемещении файлов. Я рекомендую запустить сценарий с правами администратора.
Попробуйте протестировать сценарий в небольшом масштабе, чтобы убедиться, что он работает.
см. Http://stackoverflow.com/questions/41489945/fast-methods-to-copymove-files-in-batch-file - просто измените 'limit' – Magoo
... и' "% DirN%" 'на' «NewFolder \ Sub% DirN%» ' – Compo
Похоже, что последние 2 скрипта просто повторяют копирование одной и той же первой партии файлов в разных папках ... – greektranslator