|
这是我在我的XP 里面用到IMDISK 批处理
对RAMOS 的系统来说,它是个鸡肋(系统无法分辨出来的内存还是有点用,)
- @echo off&title imdisk内存挂卸载 by x9tian&cls&color 0a&setlocal enabledelayedexpansion&if /i not "%temp:~0,1%"=="c" echo.[E] 扩展内存盘&echo.&echo.[Q] 卸载内存盘并还原系统临时文件夹&echo.&set/p mm= (选择E,Q相应操作)&if /i "!mm!"=="Q" goto 1_
- if defined mm if /i "!mm!"=="E" call "%systemdrive%%homepath%\「开始」菜单\内存盘扩容.bat"&exit
- echo.输入要创建的RAM卷容量"建议不小于80" (默认单位:M) 如:200&set/p ram=&echo.请输入要挂载的盘符(不输入,回车为智能分配盘符)&set/p dr= (无须冒号":")
- if /i "%dr: =%"=="" set dr=
- ::以上的内容,判定,有无改写临时文件夹默认盘符,是则提供扩容或卸载,未则为用户提供内存分区操作
- ::为未指定内存盘符提供智能挂载分配盘符支持
- if not defined dr set dr=#
- ::生成虚拟内存盘(NTFS RAM_TEMP),利用IMDISK支持NTFS直载扩容的特性(其它格式须重新格式化才能使用扩充容量,),在系统开始菜单写入内存盘扩容P处理
- for /f "delims=" %%i in ('imdisk -a -s %ram%M -m %dr%: -o rem -p "/fs:ntfs /c/q/y /V:RAM_TEMP"') do ( set vc=%%i
- IF /I "!vc:~0,7!"=="Created" set vc=!vc:~18,2!&echo.^@echo off^&CLS^&title BY x9tian^&color 0c^&path=%~dp0;%path%^&echo.输入要扩充的内存盘容量^(M^)如:100^&set/p jd=>"%systemdrive%%homepath%\「开始」菜单\内存盘扩容.bat"&echo.imdisk -e -s %%jd%%M -m !vc!>>"%systemdrive%%homepath%\「开始」菜单\内存盘扩容.bat"
- )
- ::生成系统临时文件夹设定的PECMD配置
- (echo.MESS \n您确认把系统临时文件夹和IE临时文件夹设置到==%vc:~0,1%盘==吗?\n如果觉得%vc:~0,1%盘 太小你可以运行「开始」菜单上的"内存盘扩容.bat"\n@设置到%vc:~0,1%盘#YN $yes
- echo.FIND $%%YESNO%%=YES,Call SetROP
- echo._SUB SetROP
- echo.PATH %vc%\TEMP\TEMP
- echo.REGI HKCU\Environment\TEMP=%vc%\TEMP\TEMP
- echo.REGI HKCU\Environment\TMP=%vc%\TEMP\TEMP
- echo.REGI HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache=%vc%\\TEMP\\Temporary Internet Files
- echo.REGI HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cache=%vc%\\TEMP\\Temporary Internet Files
- echo.ENVI
- echo._END)>临时文件到内存盘_%vc:~0,1%盘.ini
- ::挂载用户临时文件夹(包括IE)设定
- pecmd load 临时文件到内存盘_%vc:~0,1%盘.ini
- ::为WIM格式文件自动挂(setup.cmd) 掉供退出操作,方便自动运行后能自动卸载
- exit
- :1_
- @ECHO OFF&PATH=%~DP0;%PATH%
- (echo.MESS \n您确认把系统临时文件夹和IE临时文件夹设置到==%systemdrive%盘==吗?\n如果觉得%systemdrive%盘 太小你可以运行「开始」菜单上的"内存盘扩容.bat"\n@设置到%vc:~0,1%盘#YN $yes
- echo.FIND $%%YESNO%%=YES,Call SetROP
- echo._SUB SetROP
- echo.PATH %windir%\temp
- echo.REGI HKCU\Environment\TEMP=%windir%\TEMP\
- echo.REGI HKCU\Environment\TMP=%windir%\TEMP\
- echo.REGI HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache=%windir%\TEMP\Temporary Internet Files
- echo.REGI HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cache=%windir%\TEMP\Temporary Internet Files
- echo.ENVI
- echo._END)>%~n0.ini
- pecmd load %~n0.ini
- ::虚拟盘符卸载
- FOR /L %%I IN (0,1,10) DO IMDISK -d -m %%I: >nul 2>nul &IMDISK -d -u %%I >nul 2>nul
- ::清除扩容P
- del "%systemdrive%%homepath%\「开始」菜单\内存盘扩容.bat" /f /q
- ::为WIM格式文件自动挂(setup.cmd) 掉供退出操作,方便自动运行后能自动卸载
- exit
复制代码
说明:
imdisk 命令支持须要的组件 imdisk.exe imdik.cpl imdsk.sys imdisk.inf(这个右键安装后可以在%windir%\system32\inf目录找到并删除, 因为我们只要他的注册信息,)(没组件的水区有成品…(⊙_⊙;)
重要注意的一点是:
制作WIM格式的,由于WIMNT.EXE的%temp%默认是系统的%temp% 所以重启机时须要再次运行本P处理,持行卸载操作(装了影子系统的可以跳过 比如本人的爱机<( ̄oo, ̄)/)
BUG,如果用户然来将环境变量%temp% 另外指定过非C盘, 会判定为卸载模式,但无伤大雅,(你可以运行下卸载,再挂载)
其实判定应当改成: if /i not "%temp:~0,1%:"=="%systemdrive%" (因为我不知道现在的WIN7 是不是还用变量%systemdrive%,反正就这个不是BUG的BUG)
A:
echo.FIND $%%YESNO%%=YES,Call SetROP
::%YESNO%为老九的PECMD,内置变量, 在P处理中出现须以对百分号扩充变量详见老九的PECMD说明
B:
FOR /L %%I IN (0,1,10) DO IMDISK -d -m %%I: >nul 2>nul &IMDISK -d -u %%I >nul 2>nul
::这条命令我解释下:imdisk -d -m (盘符) 和imdisk -d -u (imdisk赋于盘符的内部ID)在命令行和单独批处理下都能卸载盘符, 但是在这种不算繁索的P处理下却不能卸载成功(这可能是IMDISK命令支持的一个BUG吧), 而上面方式运行却能卸载(IMDISK -d -m %%I: 其实是错误的命令行,可以用其它代替,但必须对虚拟盘进行一次卸载操作,后面的命令才能卸载成功盘符
注: imdisk 为生成盘赋于内部ID默认为 0-10
本来想贴个IMDISK 命令行命令帮助出来, 可是google 一下,发现网上有(虽然有几处错误,但还算是能给别人看吧,) 我就懒得贴了(主要是文笔功夫太差<( ̄oo, ̄)/)
这个是水区成品WIM的下载链接 (注:如果运行出现imdisk not install 表示要注册imdisk.inf) 如果觉得这批处理太扎眼,可以去水区看下简化版的P
[ 本帖最后由 x9tian 于 2010-3-16 13:37 编辑 ] |
|