Solução possível
Supondo que:
- você já criou uma unidade RAM na memória física atribuída a
R:
(qualquer outra letra também está boa). - você deseja disponibilizar a pasta
C:\Folder1
na RAM para acesso mais rápido. -
Folder1
é armazenado em um volume formatado em NTFS local.
Aplicando as alterações
- Feche todos os programas que possam estar acessando
Folder1
. - Renomeie
Folder1
paraFolder1.zTarget
(o nome real não é importante, desde que seja diferente). - Copie
Folder1.zTarget
para a unidade RAM (R:
). - Crie um link de junção de diretório chamado
Folder1
apontando paraR:\Folder1.zTarget
.
De agora em diante, toda vez que você acessar C:\Folder1
, o que você está realmente acessando são os dados armazenados na unidade RAM ( R:\Folder1.zTarget
).
Revertendo de volta
- Feche todos os programas que possam estar acessando
Folder1
(agora um link de junção de diretório). - Se algum arquivo dentro de
Folder1
foi modificado, copie oFolder1.zTarget
da RAM (R:
) para o disco (C:
) para preservar as alterações. - Exclua o link de junção de diretório chamado
Folder1
. - Renomeie
Folder1.zTarget
de volta paraFolder1
.
Automatização em lote
Embora a maioria das etapas possa ser executada manualmente, não há nenhuma maneira interna de criar links de junções de diretório, mas a partir da interface da linha de comando ( mklink
). Enquanto estamos nisso, podemos economizar tempo automatizando todo o processo.
Exemplo de script
Após uma breve inicialização, o script verificará se há pastas cujo nome contenha o sufixo personalizado. Em seguida, ele continuará aplicando ou revertendo as alterações para cada pasta definida na variável folders
, exatamente como descrito acima - exceto para as etapas "fechar todos os programas".
@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