中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-02 03:32
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 哪位高人帮我看一下这个批处理? 查看 2,737 回复 17
楼 主 哪位高人帮我看一下这个批处理? 发表于 2006-09-16 10:37 ·  新加坡
中级用户
★★
积分 249
发帖 64
注册 2005-06-03 00:00
21年会员
UID 39315
性别 男
状态 离线
@echo OFF

Title=安装XPE硬盘版
:begin
cls
COLOR 2F
echo.
echo.
echo XPE硬盘安装版
echo ==============================================
echo.
echo 即将安装“小型XPE 硬盘版”到您的系统!
echo 本安装程序不会修改系统 MBR 及分区表等信息。
echo.
Echo 请按任意键开始安装......
PAUSE >NUL
Set RP=RP
For %%I In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do If Exist %%I:\BOOT.INI Set RP=%%I
If %RP%==RP Goto Exit
FIND "Avldr.xpe" %RP%:\BOOT.INI >NUL
If %Errorlevel%==0 Goto Err1
:Install
If Exist %RP%:\AVLDR.XPE ATTRIB -S -H -R %RP%:\AVLDR.XPE
If Exist %RP%:\LDRXPE ATTRIB -S -H -R %RP%:\LDRXPE
Echo.
Echo 正在复制文件,请稍候 ......
Copy AVLDR.XPE %RP%:\ /Y>NUL
Copy LDRXPE %RP%:\ /Y>NUL
if not exist %RP%:\MININT\nul md %RP%:\MININT>NUL 2>nul
xcopy /y /r /e /q /h \I386\*.* %RP%:\MININT\>NUL 2>nul
ATTRIB -S -H -R %RP%:\BOOT.INI
If Exist %RP%:\BOOT.BAK (
ATTRIB -S -H -R %RP%:\BOOT.BAK
Del %RP%:\BOOT.BAK /Q
)
Copy %RP%:\BOOT.INI %RP%:\BOOT.BAK>NUL
TYPE %RP%:\BOOT.BAK|FIND /V "Avldr">%RP%:\BOOT.INI
Echo C:\Avldr.xpe="启动WinPE系统">>%RP%:\BOOT.INI
if not exist %RP%:\PROGRAMS\nul md %RP%:\PROGRAMS>NUL 2>nul
xcopy /y /e /q /h \PROGRAMS\*.* %RP%:\PROGRAMS\>NUL 2>nul
ATTRIB +S +H +R %RP%:\AVLDR.XPE
ATTRIB +S +H +R %RP%:\LDRXPE
ATTRIB +S +H +R %RP%:\BOOT.INI
ATTRIB +S +H +R %RP%:\BOOT.BAK
ATTRIB +S +H +R %RP%:\PROGRAMS /D /S
ATTRIB +S +H +R %RP%:\MININT /D /S

Goto SUCCESS

:Err1
CLS
Echo 好像你的机器中已经安装了 WinPE 了,请选择以下操作选项。
Echo.
Echo  1.卸载原有的 WinPE,并且重新安装。
Echo  2.退出安装
Echo.
Set Choice=
Set /P Choice=请选择要进行的操作 (1/2) ,然后按回车:
If Not '%Choice%'=='' SET Choice=%Choice:~0,1%
If /I '%Choice%'=='1' GOTO Install
If /I '%Choice%'=='2' EXIT
Goto Err1

:Exit
CLS
Echo 好像你的机器中没有安装操作系统哦,请确认后再执行本安装程序。
Echo.
Echo 请按任意键退出 。。。
PAUSE >NUL
Exit

:SUCCESS
CLS
Echo 已经成功将WinPE安装到你的 %RP%: 盘。
Echo.
Echo 系统分区中的 BOOT.INI 备份为 BOOT.BAK。
Echo.
Echo 请按任意键退出。。。
PAUSE >NUL
Exit


这个批处理是用来将光盘上的XPE系统安装到硬盘上的,出现的问题是:无法将光盘根目录PROGRAMS复制到硬盘的系统分区;无法将光盘根目录I386中的子目录和文件复制到硬盘系统分区中的MININT文件夹。ATTRIB.EXE、FIND.EXE、XCOPY.EXE、LDRXPE、AVLDR.XPE是放在光盘根目录中的一个文件夹中的。
请帮看一下吧,到底哪里有错?
2 发表于 2006-09-16 11:29 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  这段代码有点熟悉,难道是在深山红叶的基础上修改而来?
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
3 发表于 2006-09-16 19:41 ·  新加坡
中级用户
★★
积分 249
发帖 64
注册 2005-06-03 00:00
21年会员
UID 39315
性别 男
状态 离线
Originally posted by namejm at 2006-9-16 11:29 AM:
  这段代码有点熟悉,难道是在深山红叶的基础上修改而来?

是在无忧老毛桃的一个批处理和深山红叶的基础上修改而来的.
4 发表于 2006-09-17 00:54 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  首先,你应该保证你的XPE文件保存在最后一个根目录中存在boot.ini的硬盘分区上——通观你的代码,你可能在这一步都已经处理错了,推测你的原意是想判断根目录中存在boot.ini的第一个硬盘分区,然后再做后面的操作。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
5 发表于 2006-09-17 04:00 ·  新加坡
中级用户
★★
积分 249
发帖 64
注册 2005-06-03 00:00
21年会员
UID 39315
性别 男
状态 离线
Originally posted by namejm at 2006-9-17 12:54 AM:
  首先,你应该保证你的XPE文件保存在最后一个根目录中存在boot.ini的硬盘分区上——通观你的代码,你可能在这一步都已经处理错了,推测你的原栮..



我每次运行都是无法复制那两个目录,能帮我改一下吗?
6 发表于 2006-09-17 06:18 ·  中国 四川 成都 移动
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  请先介绍你的意图:XPE文件放在什么地方?想把XPE复制到哪个分区下……越详细越有助于问题的解决。

[ Last edited by namejm on 2006-9-17 at 06:20 ]
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
7 发表于 2006-09-17 06:55 ·  新加坡
中级用户
★★
积分 249
发帖 64
注册 2005-06-03 00:00
21年会员
UID 39315
性别 男
状态 离线
Originally posted by namejm at 2006-9-17 06:18 AM:
  请先介绍你的意图:XPE文件放在什么地方?想把XPE复制到哪个分区下……越详细越有助于问题的解决。

[ Last edited by namejm on 2006-9-17 at 06:20 ]

我的XPE文件放在光盘根目录,想把它复制到系统分区(定为C盘也行),并修改BOOT.INI,在里面加入C:\Avldr.xpe="启动WinPE系统" 一行,我的文件主要有以下:WIN51IP.SP2、I386目录、PROGRAMS目录、WIN51,其中I3686目录复制到系统区后要改成MININT目录名。
8 发表于 2006-09-17 10:51 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  在你顶楼代码的基础上进行改动,得到如下代码,此代码应放在硬盘上运行,并保证是以管理员权限运行它,请测试是否可以成功执行:

@echo off

title=安装XPE硬盘版
:begin
cls
COLOR 2F
echo.
echo.
echo XPE硬盘安装版
echo ==============================================
echo.
echo 即将安装“小型XPE 硬盘版”到您的系统!
echo 本安装程序不会修改系统 MBR 及分区表等信息。
echo.
echo 请按任意键开始安装......
pause>nul
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
set var=%%i
set drive=!var:~-2!
fsutil fsinfo drivetype !drive!|find /i "CD-ROM">nul && goto install || goto :eof
)
goto :eof

:install
find /i "Avldr.xpe" %systemdrive%\boot.ini>nul || goto err1
If Exist %systemdrive%\AVLDR.XPE ATTRIB -S -H -R %systemdrive%\AVLDR.XPE
If Exist %systemdrive%\LDRXPE ATTRIB -S -H -R %systemdrive%\LDRXPE
Echo.
Echo 正在复制文件,请稍候 ......
Copy %drive%\AVLDR.XPE %systemdrive% /Y>NUL
Copy %drive%\LDRXPE %systemdrive% /Y>NUL
if not exist %systemdrive%\MININT md %systemdrive%\MININT>nul
xcopy /y /r /e /q /h "%drive%\I386\*.*" %systemdrive%\MININT>NUL 2>nul
ATTRIB -S -H -R %systemdrive%\BOOT.INI
If Exist %systemdrive%\BOOT.BAK Del /a /f /q %systemdrive%\BOOT.BAK
Copy %systemdrive%\BOOT.INI %systemdrive%\BOOT.BAK>NUL
TYPE %systemdrive%\BOOT.BAK|FIND /i /V "Avldr">%systemdrive%\BOOT.INI
Echo %systemdrive%\Avldr.xpe="启动WinPE系统">>%systemdrive%\BOOT.INI
if not exist %systemdrive%\PROGRAMS md %systemdrive%\PROGRAMS>nul
xcopy /y /e /q /h "%drive%\\PROGRAMS\*.*" %systemdrive%\PROGRAMS\>NUL 2>nul
ATTRIB +S +H +R %systemdrive%\AVLDR.XPE
ATTRIB +S +H +R %systemdrive%\LDRXPE
ATTRIB +S +H +R %systemdrive%\BOOT.INI
ATTRIB +S +H +R %systemdrive%\BOOT.BAK
ATTRIB +S +H +R %systemdrive%\PROGRAMS /D /S
ATTRIB +S +H +R %systemdrive%\MININT /D /S

Goto SUCCESS


:Err1
CLS
Echo 好像你的机器中已经安装了 WinPE 了,请选择以下操作选项。
Echo.
Echo  1.卸载原有的 WinPE,并且重新安装。
Echo  2.退出安装
Echo.
Set Choice=
Set /P Choice=请选择要进行的操作 (1/2) ,然后按回车:
If Not '%Choice%'=='' SET Choice=%Choice:~0,1%
If /I '%Choice%'=='1' GOTO install
If /I '%Choice%'=='2' EXIT
Goto Err1

:SUCCESS
CLS
Echo 已经成功将WinPE安装到你的 %systemdrive% 盘。
Echo.
Echo 系统分区中的 BOOT.INI 备份为 BOOT.BAK。
Echo.
Echo 请按任意键退出。。。


[ Last edited by namejm on 2006-9-17 at 10:54 ]
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
9 发表于 2006-09-17 12:23 ·  新加坡
中级用户
★★
积分 249
发帖 64
注册 2005-06-03 00:00
21年会员
UID 39315
性别 男
状态 离线
Originally posted by namejm at 2006-9-17 10:51 AM:
  在你顶楼代码的基础上进行改动,得到如下代码,此代码应放在硬盘上运行,并保证是以管理员权限运行它,请测试是否可以成功执行:

@ ...


测试时,只见CMD窗口闪了一下就不见动静了.也刻盘试了也不行.
10 发表于 2006-09-17 22:02 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
11 发表于 2006-09-17 22:56 ·  新加坡
中级用户
★★
积分 249
发帖 64
注册 2005-06-03 00:00
21年会员
UID 39315
性别 男
状态 离线
Originally posted by qwe1234567 at 2006-9-17 10:02 PM:
顶楼上的BAT文件是在光盘上运行的吗?


要求可在光盘和硬盘上运行,有空帮看一下吧!
12 发表于 2006-09-17 23:37 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
请善用.\和..\
.\i386 表示当前目录下的I386
..\i386 表示上级目录下的I386
你没有说明目录结构,就一楼我提示一下,自己再掂量一下巴
批处理在光盘根目录的例子
..\文件夹名\xcopy.exe /y /r /e /q /h .\I386\*.* %RP%:\MININT\>NUL 2>nul
或者:
批处理和xcopy.exe在同目录的例子
xcopy.exe /y /r /e /q /h ..\I386\*.* %RP%:\MININT\>NUL 2>nul
第一高手 第二高手

13 发表于 2006-09-18 00:24 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
Originally posted by tclshx at 2006-9-17 22:56:


要求可在光盘和硬盘上运行,有空帮看一下吧!


  那应该把目录结构帖出来看看,否则我们都只是在盲人摸象而已。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
14 发表于 2006-09-18 00:31 ·  新加坡
中级用户
★★
积分 249
发帖 64
注册 2005-06-03 00:00
21年会员
UID 39315
性别 男
状态 离线
批处理放在"WINPE安装"目录中
附件
Snap1.jpg
15 发表于 2006-09-18 02:22 ·  中国 山东 菏泽 电信
银牌会员
★★★
积分 1,246
发帖 488
注册 2003-11-11 00:00
22年会员
UID 12699
性别 男
状态 离线
应该指出那一步调试不通过要复制文件的源路径 目标路径等。
论坛跳转: