AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Hunter23071985, перед тем как получить размер за доли секунд прога должна несколько секунд/минут создавать свою базу. На шпидельном диске есть определённая скорость доступа к файлам, которую не обойти ни чем. Кроме как вчера получить размер, а сегодня этот размер использовать.
|
Hunter23071985
- Стаж: 9 лет 5 месяцев
- Сообщений: 172
- Репутация:6[+] [-]
|
AZJIO, или оставить только нужные папки в Everything.ini. ))CalcFolders3.cmd:: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ :: SIZES OF USER FOLDERS :: forum: https://www.voidtools.com/forum/viewtopic.php?f=2&t=10425 :: everything.exe: https://www.voidtools.com/forum/viewtopic.php?f=12&t=9787 :: es.exe: https://www.voidtools.com/ru-ru/downloads/#cli :: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ :: ¶ CLEAN CONSOLE :: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CHCP 1251 SETLOCAL CLS @echo off :: ¶ START TIMER :: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SET _time=%time: =0% SET /a _hours=100%_time:~0,2%%%100,_min=100%_time:~3,2%%%100,_sec=100%_time:~6,2%%%100,_cs=%_time:~9,2% SET /a _started=_hours*60*60*100+_min*60*100+_sec*100+_cs :: ¶ FIND PATHS :: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FOR /F "tokens=2*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Favorites^|FIND/I "Favorites"') DO SET pFAV=%%B\ FOR /F "tokens=3*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Pictures" ^|Find "REG_"') DO SET pPIC=%%B\ FOR /F "tokens=3*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music" ^|Find "REG_"') DO SET pMUS=%%B\ FOR /F "tokens=3*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Video" ^|Find "REG_"') DO SET pVID=%%B\ FOR /F "tokens=2*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop^|FIND/I "Desktop"') DO SET pDSK=%%B\ FOR /F "tokens=2*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal^|FIND/I "Personal"') DO SET pPER=%%B\ FOR /F "tokens=1,2*" %%T IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "{374DE290-123F-4565-9164-39C4925E467B}"') DO SET pDWN=%%V\ FOR /F "tokens=1,2*" %%T IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}"') DO SET pGAM=%%V\ FOR /F "tokens=2*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Startup^|FIND/I "Startup"') DO SET pSUS=%%B\ FOR /F "tokens=3*" %%j IN ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Startup"') DO SET pSCS=%%k\ FOR /F "tokens=2*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v NetHood^|FIND/I "NetHood"') DO SET pNET=%%B\ FOR /F "tokens=2*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v SendTo^|FIND/I "SendTo"') DO SET pSND=%%B\ FOR /F "tokens=2*" %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Programs^|FIND/I "Programs"') DO SET pPRG=%%B\ :: ¶ CREATE EVERYTHING.INI :: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SET "pFAV1=%pFAV:\=\\%" SET "pPIC1=%pPIC:\=\\%" SET "pMUS1=%pMUS:\=\\%" SET "pVID1=%pVID:\=\\%" SET "pDSK1=%pDSK:\=\\%" SET "pPER1=%pPER:\=\\%" SET "pDWN1=%pDWN:\=\\%" SET "pGAM1=%pGAM:\=\\%" SET "pSUS1=%pSUS:\=\\%" SET "pSCS1=%pSCS:\=\\%" SET "pNET1=%pNET:\=\\%" SET "pSND1=%pSND:\=\\%" SET "pPRG1=%pPRG:\=\\%" CALL>NO_ALPHA_INSTANCE CALL>Everything.ini ( ECHO [Everything] :: disable program showing ECHO view=0 ECHO show_tray_icon=0 ECHO show_in_taskbar=0 ECHO bring_into_view=0 :: disable unnecessary operations ECHO load_delay=0 ECHO check_for_updates_on_startup=0 ECHO beta_updates=0 ECHO debug=0 ECHO debug_log=0 ECHO verbose=0 :: disable unnecessary data ECHO floppy_disk_volumes=0 ECHO find_mount_points_on_removable_volumes=0 ECHO scan_volume_drive_letters=0 ECHO icons=0 ECHO thumbnails=0 ECHO filelist_icons=0 ECHO filelist_thumbnails=0 ECHO auto_include_fixed_volumes=0 ECHO auto_include_fixed_fat_volumes=0 ECHO auto_include_fixed_ntfs_volumes=0 ECHO auto_include_fixed_refs_volumes=0 ECHO auto_include_remote_volumes=0 ECHO auto_include_removable_volumes=0 ECHO auto_include_removable_fat_volumes=0 ECHO auto_include_removable_refs_volumes=0 ECHO auto_remove_moved_fat_volumes=0 ECHO auto_remove_moved_ntfs_volumes=0 ECHO auto_remove_moved_refs_volumes=0 ECHO auto_remove_offline_fat_volumes=0 ECHO auto_remove_offline_ntfs_volumes=0 ECHO auto_remove_offline_refs_volumes=0 ECHO auto_remove_offline_remote_volumes=0 ECHO index=0 ECHO index_attributes=0 ECHO index_date_accessed=0 ECHO index_date_created=0 ECHO index_date_modified=0 ECHO index_folder_size=0 ECHO index_recent_changes=0 ECHO index_size=1 ECHO fast_attributes_sort=0 ECHO fast_date_accessed_sort=0 ECHO fast_date_created_sort=0 ECHO fast_date_modified_sort=0 ECHO fast_extension_sort=0 ECHO fast_size_sort=0 :: making a list of inclusions ECHO folder_subfolders=1 ECHO ntfs_volume_includes=1 ECHO ntfs_volume_paths=A:,B:,C:,D:,E:,F:,G:,H:,I:,J:,K:,L:,M:,N:,O:,P:,Q:,R:,S:,T:,U:,V:,W:,X:,Y:,Z: ECHO ntfs_volume_include_onlys=^"%pFAV1%,%pPIC1%,%pMUS1%,%pVID1%,%pDSK1%,%pPER1%,%pDWN1%,%pGAM1%,%pSUS1%,%pSCS1%,%pNET1%,%pSND1%,%pPRG1%^" :: making a list of exceptions ECHO exclude_list_enabled=1 ECHO exclude_hidden_files_and_folders=0 ECHO exclude_system_files_and_folders=0 ECHO exclude_folders="C:\\Program Files","C:\\Program Files (x86)","C:\\ProgramData","C:\\Windows" )>Everything.ini :: ¶ CALC FOLDERS :: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SET "spaces= " SET "delimiter=~" START Everything.exe -config %CD%\Everything.ini -nodb -startup -monitor-pause ECHO -------------------------------------- ECHO Folder sizes for %Username% in bytes: ECHO -------------------------------------- SET "name=shell:Favorites" && for /F "delims=" %%a in ('es.exe %pFAV% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:My Pictures" && for /F "delims=" %%a in ('es.exe %pPIC% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:My Music" && for /F "delims=" %%a in ('es.exe %pMUS% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:My Video" && for /F "delims=" %%a in ('es.exe %pVID% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:Desktop" && for /F "delims=" %%a in ('es.exe %pDSK% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:Personal" && for /F "delims=" %%a in ('es.exe %pPER% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:Downloads" && for /F "delims=" %%a in ('es.exe %pDWN% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:SavedGames" && for /F "delims=" %%a in ('es.exe %pGAM% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:Startup" && for /F "delims=" %%a in ('es.exe %pSUS% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:Common startup" && for /F "delims=" %%a in ('es.exe %pSCS% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:NetHood" && for /F "delims=" %%a in ('es.exe %pNET% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:SendTo" && for /F "delims=" %%a in ('es.exe %pSND% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout SET "name=shell:Programs" && for /F "delims=" %%a in ('es.exe %pPRG% -get-total-size -timeout 60000') do (set size=%%a) && CALL :formatout ECHO -------------------------------------- Everything.exe -exit ERASE Everything.ini 1>NUL 2>&1 ERASE Plugins.ini 1>NUL 2>&1 ERASE NO_ALPHA_INSTANCE 1>NUL 2>&1 :: ¶ END TIMING :: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SET _time=%time% SET /a _hours=100%_time:~0,2%%%100,_min=100%_time:~3,2%%%100,_sec=100%_time:~6,2%%%100,_cs=%_time:~9,2% SET /a _duration=_hours*60*60*100+_min*60*100+_sec*100+_cs-_started SET /a _hours=_duration/60/60/100,_min=100+_duration/60/100%%60,_sec=100+(_duration/100%%60%%60),_cs=100+_duration%%100 ECHO Elapsed time (hh:mm:ss.ms): %_hours%:%_min:~-2%:%_sec:~-2%.%_cs:~-2% ECHO. PAUSE GOTO :eof :: ¶ SERVICE UNIT :: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :formatout CALL :padright name 20 CALL :padleft size 15 ECHO %name% %delimiter% %size% GOTO :eof :padright CALL SET padded=%%%1%%%spaces% CALL SET %1=%%padded:~0,%2%% GOTO :eof :padleft CALL SET padded=%spaces%%%%1%% CALL SET %1=%%padded:~-%2%% GOTO :eof Комплект тут, запустить CalcFolders3.cmd. PS: David Carpenter (автор Everything) опубликовал предыдущую версию скрипта тут, можно присоединиться к обсуждению.
Последний раз редактировалось: Hunter23071985 (2021-09-05 14:53), всего редактировалось 5 раз(а)
|
KaSpieC 666
- Стаж: 9 лет 9 месяцев
- Сообщений: 787
- Репутация:127[+] [-]
- Откуда: Одесса
|
conty9, Какие-то у меня неудачные знакомства с программой всё время. То нечаянно удалил всё с рабочего стола (хотел увидеть как работает прога), потом всё время отображалась в программе папка Downloads на диске Е (хотя есть папка на диске С). Теперь: папка Downloads в программе отображается на пути E:\\Downloads при нажатии на путь в программе E:\\Downloads, открывается в проводнике Этот компьютер>Документы (хотя папка в профиле Загрузки - есть). в проводнике, папка E:\Downloads переименовалась в Загрузки и вместо значка папки - теперь стрелочка))) Я конечно не эксперт, но мне кажется, что прога меня не любит
|
|
KaSpieC 666, запусти regedit.exe, перейди в [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders], исправь значение {374DE290-123F-4565-9164-39C4925E467B} на C:\Downloads. А в папке E:\Downloads просто нужно исправить desktop.ini, или его удалить - тогда папка будет показана как обычная. Проводник папку E:\\Downloads открыть не может, поэтому открывает то, что знает - документы (он всегда так поступает, если путь неверен). А откуда у тебя взялись два \\ - загадка. Ну и удалить всё с рабочего стола, как я уже писал, можно только таким способом: перенести раб.стол на другой диск с удалением оригинала, а потом на другом диске грохнуть перенесённый рабочий стол. Потому что сама утилита принимает изменения в пути категории и удаляет данные исключительно при успешном завершении копирования.
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
conty9, может перед удалением источника сделать сообщение? Так безопасней. "Удалить источник для завершения операции перемещения?" Кнопки Да Нет. По поводу размера проверь скорость работы моей проги поиска дубликатов. Когда в строке состояния поиск файлов это время на формирование поиска и получения размеров, но там еще сортировка и формирование списка это можно считать как сложение чисел вот столько времени затрачивает прога на поиск файлов и размеров. Для интереса сам проверю после работы. Что на автоите что на пурике можно проверить однотипными прогами. И на проге синхронизации папок можно проверить. И на проге которая выдает список размеров папок. Можно написать как dll если pecmd поддерживает.
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Скачать wincopy: yandex upload.ee (готовый результат, исходник в комплекте). Ком-строка: wincopy.exe "исходный_путь" "путь_назначения". Если процесс копирования является длительным, примерно более 2-3 секунд, то появляется окно прогресса копирования. Ранее проблему вызывала функция CheckPath(), хоть и логически она написана правильно с использованием сторонних функций. Но легко отказался от неё из-за того, что WinAPI функция сама содержит проверку всего и вся. Перезалил, подправил возврат ошибок
Последний раз редактировалось: AZJIO (2021-08-15 08:07), всего редактировалось 2 раз(а)
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
conty9 Это чисто виндовая функция, я не могу в неё что-то добавить. Хотя и можно было бы создать аналоги типа ранее известных 2- прог, которые показывают общую полосу прогресса и отдельно для очередного файла. Но мне кажется средствами винды это знак качества, это как будто мышкой перенести папку из одной директории в другую. Там есть константы (в начале скрипта), 4 константы операции и остальные поведение. Автором функции изначально было заложены константы #FOF_NOCONFIRMMKDIR - создавать папку если требуется без вопросов у пользователя #FOF_NOCONFIRMATION - отвечать всегда ДА на любые окна (заменить) #FOF_NOERRORUI - подавлять сообщения об ошибках. В общем поведение можно задать флагами, а они указаны в описании функции (в гугле можно найти, вот)
|
Отправлено: 14-Авг-2021 19:11
(спустя 1 час 59 минут)
|
AZJIO, я, кажется, понял, как можно сильно ускорить процесс получения размера папки (хоть пока и не знаю, как это реализовать). Суть в том, что нужно получать не сумму всех размеров файлов, а суммарное занимаемое ими место. Файл самого минимального размера всегда занимает один кластер. В MFT хранится инфа, где хранится каждый файл и сколько кластеров он занимает. Так что вполне достаточно прочитать MFT и проанализировать его на количество занимаемых файлами кластеров. А вот, чтобы получить суммарное место, приходится читать атрибуты для каждого файла (только это не те атрибуты, к которым привыкли мы) из скрытого потока, где указана его длина. Поэтому в таком случае время обработки прямо зависит от количества файлов, приходится перечитывать для каждого файла его поток (это скрытый системой файл).
|
xowlet
- Стаж: 9 лет 5 месяцев
- Сообщений: 174
- Репутация:11[+] [-]
|
После вдумчивого прочтения семи страниц у меня родилось предложение, и мне хотелось бы услышать мнение специалистов и пользователей по нему. Предлагаю реализовать два режима работы программы. Профессиональный, для специалистов, с возможностью тонкой настройки, в котором задействованы все возможности программы и облегчённый, для простых юзеров, с минимальным набором функций и количеством настроек. В облегчённом режиме будет производится простое перемещение всех стандартных системных папок пользователя, от имени которого будет выполняться программа, при наличии свободного дискового пространства, необходимого для этого, в каталог, зеркально отражающий их исходную структуру. И будет всего три кнопки: - переключение режима (про/лайт), - отменить, - выполнить.
|
|
Версия 0.9.3.3. Изменения: 1. Добавил индикацию размера категорий, если больше 1Гб - голубой, больше 10Гб - оранжевый, больше 100Гб - красный. 2. Поправил немного отображение целевых путей, если их размер не получен за 10сек. (когда слишком много файлов в целевой папке). 3. По мелочи разное.-Сегодня немного экспериментировал с различными программами, определяющими размер папок. Судя по скорости, только Everything и TreeSize Free (начиная с версии 3.0) работают напрямую с $MFT, что даёт отличную скорость получения размера папки. Только использовать их, увы, не получится. Возможно, подошла бы утилита ntfsdir, но она сильно платная. Причём даже проверить её работоспособность без покупки не получится, сразу говорит - нет лицензии и покеда. Когда-то вроде была бесплатной, но старых версий не найти.
|
Отправлено: 17-Авг-2021 11:16
(спустя 1 день 12 часов)
|
Ну, раз жалоб нет, финальный релиз 1.0.0.1. По-сути, 0.9.3.3 с косметическими изменениями (перезалит 18.08.2021).
Последний раз редактировалось: Гость (2021-08-18 17:34), всего редактировалось 5 раз(а)
|
Hunter23071985
- Стаж: 9 лет 5 месяцев
- Сообщений: 172
- Репутация:6[+] [-]
|
88034Судя по скорости, только Everything и TreeSize Free (начиная с версии 3.0) работают напрямую с $MFT, что даёт отличную скорость получения размера папки. Только использовать их, увы, не получится. conty9, добрый день! Почему не получится - чем не устроил этот вариант поиска размера папок? Добавил в пост батник, попробуйте...
|
Страница 3 из 5
Текущее время: 21-Ноя 13:42
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|