|
楼主 |
发表于 2019-10-25 09:24:32
|
显示全部楼层
贴出精简的win10批处理文件,搜集于网上加上自己小修改,感谢群里和全部为ramos贡献的盆友~
原理是C只放指针,和基本启动的文件;其他全在wim中,2G足够了,群里批处理采用的是3镜像模式,没必要;
@echo off
cls
echo wim放硬盘
ver |find "6.1">nul && goto vererror
@ echo.
echo 默认用z盘符,若本机已存在z盘的,请自行修改。将set ddisk中的z改成其它。
taskkill /f /im FancyRd.exe 1>nul 2>nul
%~dp0snapshot32.exe "%~dp0c" -!unmount 1>nul 2>nul
del/f/q "%CD%\*.wim" 1>nul 2>nul
del/f/q "%CD%\*.hsh"1>nul 2>nul
del/f/q "%CD%\*.sn*" 1>nul 2>nul
del/f/q "c:\grldr" 1>nul 2>nul
del/f/q "c:\menu.lst" 1>nul 2>nul
::设置开始时间
set time1=%time%
set /a time1_hour=%time1:~0,2%
set /a time1_minute=1%time1:~3,2%-100
set /a time1_second=1%time1:~-5,2%-100
set /a time1_millisec=1%time1:~-2,2%-100
::请输入内存盘符
set ddisk=z:
::请输入系统盘符
set sdisk=c:
::请输入RamOS文件存放路径
set vdpath=D:\RamOS\Win10x64
::防止文件夹已存在改名
rename "%vdpath%" "%vdpath%%time%" 1>nul 2>nul
::建立romos存放目录
md %vdpath%
::设置存放文件名
set vdname=Win10x64en
set vdffile=%vdpath%\%vdname%.vdf
set vwimfile=%vdpath%\%vdname%.wim
::请输入RamOS系统盘卷标
set ddlable=RamOS Win10x64en
::请输入内存盘大小,单位M
set size=2048
::默认变量,不用修改
set srv=HKLM\sys\ControlSet001\Services\
set s=HKLM\system\MountedDevices
set d=HKLM\sys\MountedDevices
if /i "%PROCESSOR_IDENTIFIER:~0,3%" == "X86" (
set rxprd="%cd%\rxprd32.exe"
set bcd="%cd%\BCD"
set bootmgr="%cd%\bootmgr"
%cd%\rxprd32.exe im enable -r 128 -n -s
set snapshot="snapshot32.exe"
set wimlib="\wimlib-imagex86\wimlib-imagex32.exe"
set wof="%cd%\wofadk86.sys") else (
set rxprd="%cd%\rxprd64.exe"
set bcd="%cd%\BCD"
set bootmgr="%cd%\bootmgr"
set snapshot="snapshot64.exe"
set wimlib="\wimlib-imagex64\wimlib-imagex64.exe"
set wof="%cd%\wofadk64.sys")
@ echo.
echo 正在创建内存盘
%rxprd% add -n %size% -im -t SCSI -d %ddisk% -dmm=compact -fs NTFS -N -c 4KB -L -I %vdffile% -s 1>nul 2>nul
@ping 127.0.0.1 -n 2 >nul
@ echo.
echo 备份系统盘到当前目录
%snapshot% %sdisk% "%cd%\c" /y /y
@ping 127.0.0.1 -n 2 >nul
@ echo.
echo 浏览C.sna到p盘
@ echo.
start %~dp0%snapshot% %~dp0c.sna P: -VQ
@ echo.
@ping 127.0.0.1 -n 3 >nul
IF ERRORLEVEL 1 goto liu
echo wimboot压缩临时盘到当前目录
"%cd%\%wimlib%" capture P: "%vwimfile%" "scsi" "scsi Image" --config "%cd%\WimBootCompressWin10.ini" --wimboot --compress=maximum
IF ERRORLEVEL 1 goto wim
@ echo.
echo wim放硬盘
"%cd%\%wimlib%" apply "%vwimfile%" %ddisk%\ --wimboot
IF ERRORLEVEL 1 goto wim
echo ☆☆☆☆☆☆ 操作完成,导入注册表 ☆☆☆☆☆☆
echo ☆☆☆☆☆☆ 正在走Win8/10流程,如发生错误,请检查你的系统是否支持bcdboot ☆☆☆☆☆☆
if not exist %ddisk%\boot md %ddisk%\boot
copy %bcd% %ddisk%\boot\bcd
IF ERRORLEVEL 1 goto bcd
@echo off if not exist %ddisk%\bootmgr echo F | xcopy /s/e/h/y %bootmgr% %ddisk%\bootmgr
bcdedit /store %ddisk%\boot\bcd /set {default} path \windows\system32\boot\winload.exe
IF ERRORLEVEL 1 goto bcd
attrib %ddisk%\boot +h
attrib %ddisk%\bootmgr +h
reg load hklm\sys %ddisk%\windows\system32\config\system
IF ERRORLEVEL 1 goto zcb
reg add "%srv%disk" /f /v "Group" /t REG_SZ /d "SCSI Class"
reg add "%srv%volsnap" /f /v "Group" /t REG_SZ /d "SCSI Class"
reg add "%srv%FancyRd" /f /v "Group" /t REG_SZ /d "Event Log"
reg add "%srv%fvevol" /f /v "Group" /t REG_SZ /d "SCSI Class"
reg add "%srv%rdyboost" /f /v "Group" /t REG_SZ /d "SCSI Class"
reg query "%srv%volume">nul 2>nul&® add "%srv%volume" /f /v "Group" /t REG_SZ /d "File System"
reg query "%srv%iorate">nul 2>nul&® add "%srv%iorate" /f /v "Group" /t REG_SZ /d "File System"
reg query "%srv%uwfvol">nul 2>nul&® add "%srv%uwfvol" /f /v "Group" /t REG_SZ /d "SCSI Class"
reg add "HKLM\sys\ControlSet001\Control\PnP" /f /v "PollBootPartitionTimeout" /t REG_DWORD /d 60000
for /f "tokens=3* delims= " %%a in ('reg query %s% /v \Dosdevices\%sdisk%') do (
reg add %d% /v \Dosdevices\%ddisk% /t REG_BINARY /d %%a /f)
for /f "tokens=3* delims= " %%a in ('reg query %s% /v \Dosdevices\%ddisk%') do (
reg add %d% /v \Dosdevices\%sdisk% /t REG_BINARY /d %%a /f)
reg unload hklm\sys
IF ERRORLEVEL 1 goto zcb
goto last
:last
%~dp0%snapshot% "%~dp0c" -!unmount 1>nul 2>nul
@ping 127.0.0.1 -n 2 >nul
del/f/q "%CD%\*.hsh"1>nul 2>nul
del/f/q "%CD%\*.sn*" 1>nul 2>nul
echo ☆ 正在保存SCSI内存盘,请勿关闭此界面 ☆
@ echo.
echo ☆☆ 正在保存中,请继续耐心等待。。。 ☆☆
echo ☆☆ 正在保存中,请继续耐心等待。。。 ☆☆
echo ☆☆ 正在保存中,请继续耐心等待。。。 ☆☆
label %ddisk% %ddlable%
%rxprd% save 1 -s
move %vdffile% %vdffile%1
copy /y /v %vdffile%1 %vdffile%
del /f /q %vdffile%1
@ echo.
if exist %vdffile% goto good
if not exist %vdffile% goto eor
:eor
echo 制作失败,检测不到VDF文件,请检查是否内存足够,盘符是否冲突!是否支持bcdboot,是否存在boot文件夹。
goto eor1
:good
echo ☆☆☆☆☆☆ 保存完成,重启可进 SCSI WIMBOOT RAMOS 系统 ☆☆☆☆☆☆
echo ☆☆☆☆☆☆ 保存完成,重启可进 SCSI WIMBOOT RAMOS 系统 ☆☆☆☆☆☆
echo ☆☆☆☆☆☆ 保存完成,重启可进 SCSI WIMBOOT RAMOS 系统 ☆☆☆☆☆☆
echo ☆☆☆☆☆☆ 保存完成,重启可进 SCSI WIMBOOT RAMOS 系统 ☆☆☆☆☆☆
echo ☆☆☆☆☆☆ 保存完成,重启可进 SCSI WIMBOOT RAMOS 系统 ☆☆☆☆☆☆
::计算制作耗时
@ echo.
set time2=%time%
set /a time2_hour=%time2:~0,2%
set /a time2_minute=1%time2:~3,2%-100
set /a time2_second=1%time2:~-5,2%-100
set /a time2_millisec=1%time2:~-2,2%-100
if %time2_millisec% lss %time1_millisec% set /a time2_millisec+=100&set /a time2_second-=1
if %time2_second% lss %time1_second% set /a time2_second+=60&set /a time2_minute-=1
if %time2_minute% lss %time1_minute% set /a time2_minute+=60&set /a time2_hour-=1
set /a minute=time2_minute-time1_minute
set /a second=time2_second-time1_second
set /a millisec=time2_millisec-time1_millisec
@echo 程序运行开始时间:%time1% 结束时间:%time2%
@echo 制作时间:%minute%分钟%second%秒!
@pause
@exit
:bcd
echo bcd复制失败,内存盘不存在bcd或bootmgr。
goto eor1
:liu
echo 加载sna失败
goto eor1
:wim
echo 制作、释放启动文件失败。
goto eor1
:wof
echo 复制wofadk失败。
goto eor1
:zcb
echo 导入注册表失败
goto eor1
:vererror
@echo windows版本不对,任意键退出。
@pause
goto eor1
:eor1
@ echo.
@ echo.
@ echo.
pause
@exit
|
|