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:\Folder1na 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
Folder1paraFolder1.zTarget(o nome real não é importante, desde que seja diferente). - Copie
Folder1.zTargetpara a unidade RAM (R:). - Crie um link de junção de diretório chamado
Folder1apontando 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
Folder1foi modificado, copie oFolder1.zTargetda RAM (R:) para o disco (C:) para preservar as alterações. - Exclua o link de junção de diretório chamado
Folder1. - Renomeie
Folder1.zTargetde 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