Возможное решение
При условии, что:
- Вы уже создали ОЗУ в физической памяти, назначенной
R: (любая другая буква тоже подойдет).
- Вы хотите сделать папку
C:\Folder1 доступной в оперативной памяти для более быстрого доступа.
Folder1 хранится на локальном томе в формате NTFS.
Применение изменений
- Закройте все программы, которые могут получить доступ к
Folder1 .
- Переименуйте
Folder1 в Folder1.zTarget (реальное имя не важно, если оно другое).
- Скопируйте
Folder1.zTarget на RAM-диск (R: :).
- Создайте ссылку соединения каталога с именем
Folder1 указывающую на R:\Folder1.zTarget .
С этого момента каждый раз, когда вы обращаетесь к C:\Folder1 , на самом деле вы получаете доступ к данным, хранящимся на диске RAM (R:\Folder1.zTarget).
Возврат обратно
- Закройте все программы, которые могут обращаться к
Folder1 (теперь ссылка для соединения с каталогом).
- Если какой-либо файл внутри
Folder1 был изменен, скопируйте Folder1.zTarget из RAM (R: :) на диск (C: :), чтобы сохранить изменения.
- Удалите ссылку соединения каталога с именем
Folder1 .
- Переименуйте
Folder1.zTarget обратно в Folder1 .
Пакетная автоматизация
Несмотря на то, что большинство шагов можно выполнить вручную, встроенного способа создания ссылок на соединения в каталогах нет, кроме как из интерфейса командной строки (mklink). Пока мы на этом, мы можем сэкономить время, автоматизируя весь процесс.
Пример скрипта
После краткой инициализации скрипт проверит, есть ли какие-либо папки, имя которых содержит пользовательский суффикс. Затем он будет продолжать применять или отменять изменения для каждого набора папок в переменной folders , как описано выше, за исключением шагов "закрыть все программы".
@echo off
set folders="C:\Folder1","C:\Some other\folder"
set suffix=zTarget
set ramdisk=R:
for %%G in (%folders%) do (
dir "%%~dpG" /a:d | find ".%suffix%" >nul
goto :check
)
:check
if "%errorlevel%"=="0" goto :revert
:apply
for %%G in (%folders%) do (
if exist "%%~G\" (
ren "%%~G" "%%~nG.%suffix%"
xcopy "%%~G.%suffix%" "%ramdisk%%%~pnG.%suffix%" /e /i /f /h /r /k /y /j
mklink /j "%%~G" "%ramdisk%%%~pnG.%suffix%"
echo.
))
goto :end
:revert
for %%G in (%folders%) do (
if exist "%%~G.%suffix%\" (
xcopy "%ramdisk%%%~pnG.%suffix%" "%%~G.%suffix%" /e /i /f /h /r /k /y /j
rd "%%~G"
ren "%%~G.%suffix%" "%%~nG"
echo.
))
:end
pause
exit /b