Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Оперативная память
Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2709
Благодарности: 1685

Профиль | Отправить PM | Цитировать


Malukov.Dmitry,
У Вас какой-то запутанный код. Попытался упростить. Не очень отладил, нет Ваших утилит.
Код: Выделить весь код
@Echo Off
cls
	Title Создание RAM-диска
	Set "Default=X:\windows\temp"

	:Start
	IF /I Not "%temp%"=="%Default%" Call :UnmountRamDiskPromt ||Exit /B

 	:GetInfo
 	Set /A RD1=2621440
 	Set /A RD2=2097152
	Set RD3=1572864
	
	For /f "skip=1" %%p in ('wmic os get freephysicalmemory') Do Set /A m=%%p &GoTo :RamDiskOpt
	:RamDiskOpt

	Echo Свободной памяти RAM: "%m%" Килобайт
	Echo.
 	Echo Текущее расположение TEMP: %temp%
 	Echo Текущее расположение TMP: %tmp%
 	Echo.

	If %m% LSS %RD3% (
		:MemoryLow
		nircmd infobox "Не рекомендуется создавать RAM-диск при объеме свободной памяти менее 1.5 ГБ. Операция будет прервана." "Ошибка"
		Exit /B 1
	)
	Set /A rdsize=512
	If %m% GEQ %RD2% Set /A rdsize=768 
	If %m% GEQ %RD1% Set /A rdsize=1024
Echo Свободно=%m%Kb  RAM-диск=%rdsize% 

	:getFreeDisk
	Set "Disks="
	For /f "usebackq skip=1 tokens=1,2 Delims=:" %%A IN (`"wmic logicaldisk get caption,name"`) DO If Not "%%B"=="" Call Set "Disks=%%Disks%%%%A"
	For %%A IN (B K L M N O P Q R S T U V W) DO (
		Echo %Disks%|Find /I "%%A" >nul 2>&1 ||(Set "disk=%%A:" &GoTo :FreeDisk)
	)
	:FreeDisk
Echo Буква диска=%disk%

	:MountRamDisk
	imdisk -a -t vm -s %rdsize%M -m %disk% -p "/fs:ntfs /q /y /v:RAM-Disk">nul
	md %disk%\Temp>nul
	Setx Temp %disk%\Temp>nul
	Setx Tmp %disk%\Temp>nul
	If Exist "%disk%\Temp\" nircmd infobox "Папка TEMP успешно перемещена на диск %disk%." "Готово"&&restartshell
	If Not Exist "%disk%\Temp\" (
		nircmd infobox "Не удалось создать RAM-диск или внести изменения в реестр. Будет выбрана папка по умолчанию (%Default%)"
		Setx temp "%Default%"
		Setx tmp "%Default%
		restartshell >nul
	)
Pause
GoTo :Eof

:UnmountRamDiskPromt
	Title Отключение RAM-диска
	Echo.
 	Echo Папка TEMP уже перемещена на RAM-диск. Отключить все RAM-диски и установить папку TEMP по умолчанию ?
	Echo.
	Echo ВВедите:
	CHOICE /C YN /M "Y-для продолжения, или N-для выхода"
	
	If %ErrorLevel%==2 Exit /B 0

	Set tmpdir=%temp%
	Set tmpdisk=%tmpdir:~0,2%

	imdisk -d -m %tmpdisk%>nul

	Setx temp %Default% >nul
	Setx tmp %Default%>nul
	
	restartshell
	nircmd infobox "Все RAM-диски были отключены. Установлена папка TEMP по умолчанию." "Готово"
Exit /B 2

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 22:08, 09-12-2018 | #11

Название темы: Оперативная память