Программа переносит выбранную папку из %USERPROFILE%\AppData в указанное место и создаёт на старом пути NTFS junction-ссылку.
Добавлена кнопка Размеры.
Она:
- Берёт текущую выбранную исходную папку.
- Если исходная папка не выбрана, берёт
%LOCALAPPDATA%. - Считает размеры прямых подпапок.
- Показывает отдельное окно со списком по убыванию размера.
- Позволяет двойным щелчком выбрать подпапку как исходную.
Важно: папки-ссылки/junction не раскрываются и не считаются как реальный размер цели. Это сделано специально, чтобы уже перенесённые папки не выглядели как обычные локальные папки.
Программа теперь проверяет вложенные junction/symlink/reparse point папки внутри выбранной папки.
Пример проблемы:
Выбрана:
C:\Users\User\AppData\Local\Yandex
Но внутри уже есть перенесённая папка:
C:\Users\User\AppData\Local\Yandex\YandexBrowser\User Data -> G:\Appdata\Local\Yandex\YandexBrowser\User Data
В таком случае программа заблокирует перенос Local\Yandex, потому что перенос родителя может сломать вложенную ссылку.
Правильные варианты:
- выбрать более точную папку, которая ещё не содержит вложенных ссылок;
- сначала вручную вернуть/отменить уже перенесённую вложенную папку;
- не переносить родительскую папку целиком.
Программа проверяет приложения, которые держат файлы в переносимой папке.
- Перед переносом проверяет занятость папки через Windows Restart Manager.
- Показывает список процессов, которые могут мешать переносу.
- Предлагает закрыть их автоматически.
- Сначала пробует мягкое закрытие окна.
- Если процесс всё ещё держит файлы, отдельно спрашивает разрешение на принудительное завершение.
Кнопка Занятость запускает ручную проверку.
Целевой путь строится по полному пути после AppData.
Пример:
Исходная папка:
C:\Users\User\AppData\Local\Yandex\YandexBrowser\User Data
Выбранная базовая папка:
G:\Appdata
Новая папка:
G:\Appdata\Local\Yandex\YandexBrowser\User Data
- Распакуйте архив.
- Запустите
Start-AppData-Folder-Mover.bat. - Выберите исходную папку внутри
AppData. - Нажмите
Базаи выберите базовую папку на другом диске. - Программа автоматически подставит полный путь после
AppData. - При необходимости нажмите
Размеры, чтобы найти самые большие подпапки. - При необходимости нажмите
Занятость, чтобы проверить мешающие приложения. - Нажмите
Проверить. - Нажмите
Перенести.
Для больших папок используется robocopy.
Подробный вывод идёт:
- В консоль, из которой запущен
.bat. - В файл внутри папки:
detailed_logs
Кнопка Логи открывает эту папку.
- Проверяет, что исходная папка внутри
AppData. - Проверяет, что исходная папка не является ссылкой.
- Проверяет, что внутри выбранной папки нет уже перенесённых вложенных папок-ссылок.
- Проверяет приложения, которые держат файлы.
- При согласии пользователя закрывает мешающие процессы.
- Переименовывает исходную папку во временную.
- Копирует временную папку в новое место через
robocopy. - Создаёт
junctionна старом пути через:
mklink /J
- После успешного создания ссылки удаляет временную исходную копию.
- Не переносите весь
AppData,Local,RoamingилиLocalLowцеликом. - Перед переносом лучше закрыть программу/игру вручную.
- Автоматическое закрытие может привести к потере несохранённых данных.
- Целевой диск должен быть NTFS.
- Для папок используется
junction, а не обычный ярлык.lnk. - Сетевые пути для
junctionне подходят. - Если внутри выбранной папки уже есть вложенная перенесённая папка, перенос родителя блокируется.