楼 主
帮我看看这段autoexec.bat哪里不对?
发表于 2007-04-20 07:43 · 中国 江苏 常州 电信
银牌会员
★★★
积分 2,404 发帖 946 注册 2005-09-08 13:44 20年会员 UID 42345
状态 离线
autoexec.bat内容(片段)
@ECHO OFF
FOR %%a IN (A: C:) DO IF EXIST SET ud=%%a
mem /c|tfind /i "TW">nul
if not errorlevel 1 goto mo
lh %ud%\dos\tw /np N3 >nul
:mo
SET DIRCMD=/OGN /4
SET PROMPT=$P$G
SET HDPMI=16384
SET RAMDRIVE=x:\
XMSDSK 20480 %RAMDRIVE% /y>NUL
PATH=%RAMDRIVE%;%ud%\;%ud%\dos;
COPY %ud%\dos\COMMAND.COM %RAMDRIVE%>NUL
SET COMSPEC=%RAMDRIVE%COMMAND.COM
MD %RAMDRIVE%TEMP
SET TEMP=%RAMDRIVE%TEMP
CD>%TEMP%\BOOTDRV.INI
vol>%TEMP%\VOL.TXT
cls
call w.bat box (+white on +blue) @%ud%\dos\dos.scr:start
if errorlevel 100 goto end
if errorlevel 4 goto re
if errorlevel 3 goto end
if errorlevel 2 goto wdos
menu..bat
下面是 menu.bat部分内容:
IF EXIST %RAMDRIVE%dos\gho.bat goto gh
IF NOT EXIST %RAMDRIVE%unzip.exe copy %ud%\dos\unzip.exe %RAMDRIVE%unzip.exe
IF EXIST %ud%\dos\gho.ex_ copy %ud%\dos\gho.ex_ %RAMDRIVE%gho.zip>NUL
PATH=%PATH%;%RAMDRIVE%gho\;
%RAMDRIVE%
cd\
unzip -d gho.zip >nul
del gho.zip >nul
:gh
gho.bat
执行到cd\停止 此时%RAMDRIVE%里有unzip gho.zip 但就是没解压
手动解压后;原PATH无效 提示找不到文件(文件在%ud%\dos)
第 2 楼
发表于 2007-04-20 07:58 · 中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946 发帖 1,884 注册 2006-01-20 13:00 20年会员 UID 49283 性别 男
状态 离线
水平有限,我也看不出问题。
没看出虚拟盘里有目录,不如直接把cd\拿掉算了。
第 3 楼
发表于 2007-04-20 08:03 · 中国 江苏 常州 电信
银牌会员
★★★
积分 2,404 发帖 946 注册 2005-09-08 13:44 20年会员 UID 42345
状态 离线
第 4 楼
发表于 2007-04-20 08:57 · 中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946 发帖 1,884 注册 2006-01-20 13:00 20年会员 UID 49283 性别 男
状态 离线
第 5 楼
发表于 2007-04-20 08:58 · 中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946 发帖 1,884 注册 2006-01-20 13:00 20年会员 UID 49283 性别 男
状态 离线
第 6 楼
发表于 2007-04-20 09:08 · 中国 黑龙江 哈尔滨 电信
高级用户
★★★
积分 760 发帖 357 注册 2005-10-10 22:33 20年会员 UID 43332
状态 离线
FOR %%a IN (A: C:) DO IF EXIST SET ud=%%a
这里错了!
如果是判断引导盘符号,建议用卷标来确定,就是给你的IMG来个固定的卷标!
或者用CD>%TEMP%\BOOTDRV.INI来判断.
[ Last edited by 0451lym on 2007-4-20 at 09:14 AM ]
第 7 楼
发表于 2007-04-20 09:29 · 中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946 发帖 1,884 注册 2006-01-20 13:00 20年会员 UID 49283 性别 男
状态 离线
Originally posted by 0451lym at 2007-4-20 09:08:
FOR %%a IN (A: C:) DO IF EXIST SET ud=%%a
这里错了!
如果是判断引导盘符号,建议用卷标来确定,就是给你的IMG来个固定的卷标!
或者用CD>%TEMP%\BOOTDRV.INI ...
像是用于u盘启动的,是的话,也可放个特征文件。
或者象一键ghost那样,启动后执行
vol >x:\vol.txt
接下来用下面这句来判断
type vol.txt|find /i "drive C"
第 8 楼
发表于 2007-04-20 09:56 · 中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404 发帖 946 注册 2005-09-08 13:44 20年会员 UID 42345
状态 离线
Originally posted by lianjiang2004 at 2007-4-20 08:57:
问题是你的cd\是在解压前呀。
cd\是回到根目录,我解压还是应该继续吧!不用CD\ 问题依旧!
Originally posted by lianjiang2004 at 2007-4-20 08:58:
del >nul
???这句也不对吧?
应该是 del gho.zip
Originally posted by 0451lym at 2007-4-20 09:08:
FOR %%a IN (A: C:) DO IF EXIST SET ud=%%a
这里错了!
如果是判断引导盘符号,建议用卷标来确定,就是给你的IMG来个固定的卷标!
或者用CD>%TEMP%\BOOTDRV.INI ...
现在问题是在%ud%(也就是在U盘启动目录)下时可以运用的!跳转到%RAMDRIVE%后, 原AUTOEXEC里的PATH设定都无效!我原来一直是这样用的!只是试用MINITO后,重新改了一下CONFIG.SYS一下,现在进去%RAMDRIVE%后原PATH都没用 ,回到U盘又可以用,
会不会是COMMAND的问题呢?
第 9 楼
发表于 2007-04-20 10:12 · 中国 黑龙江 哈尔滨 电信
高级用户
★★★
积分 760 发帖 357 注册 2005-10-10 22:33 20年会员 UID 43332
状态 离线
FOR %%a IN (A: C:) DO IF EXIST SET ud=%%a
应该是这样的:
FOR %%a IN (A: C:) DO IF EXIST %%a SET ud=%%a
但是这个结果永远是%UB%=="C:"
第 10 楼
发表于 2007-04-20 10:16 · 中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404 发帖 946 注册 2005-09-08 13:44 20年会员 UID 42345
状态 离线
Originally posted by 0451lym at 2007-4-20 10:12:
FOR %%a IN (A: C:) DO IF EXIST SET ud=%%a
应该是这样的:
FOR %%a IN (A: C:) DO IF EXIST %%a SET ud=%%a
但是这个结果永远是%UB%=="C:"
谢 现在的根本问题还是没解决!郁闷!我贴出CONFIG.SYS 看一下!
dos=high,umb,auto
device=\DOS\himem.sys /testmem:off
device=\dos\UMBPCI.SYS /I=D800-EFFF
device=\dos\jemm386.exe i=b000-b7ff noems
SHELL=\DOS\COMMAND.COM /P /F /E:4096
FCBSHIGH=4,0
FILESHIGH=30
BUFFERSHIGH=80,0
STACKSHIGH=9,256
LASTDRIVEHIGH=Z
第 11 楼
发表于 2007-04-20 10:23 · 中国 黑龙江 哈尔滨 电信
高级用户
★★★
积分 760 发帖 357 注册 2005-10-10 22:33 20年会员 UID 43332
状态 离线
看不出什么问题呀!
建议在进入DOS时用CTRL+F8,一步一步来看看那里出错了!
在用SET看看变量那里不对!
第 12 楼
发表于 2007-04-20 12:36 · 中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404 发帖 946 注册 2005-09-08 13:44 20年会员 UID 42345
状态 离线
Originally posted by 0451lym at 2007-4-20 10:23:
看不出什么问题呀!
建议在进入DOS时用CTRL+F8,一步一步来看看那里出错了!
在用SET看看变量那里不对!
DOS启动时是正常的!而且AUTOEXEC文件执行也是顺利的;包括开始PATH=%UD%也可以,否则的话,在MENU.BAT里不可能执行到CD\吧!从AUTOEXEC里执行的MENU.BAT执行到cd\停止 并提示 批处理丢失 (Batch file missing )
如果手动解压后进入%RAMDRIVE%gho目录执行GHO.BAT的话,由于此时在先前的AUTOEXEC文件里设置的PATH=%UD%;%UD%\DOS失效 导致无法运行%RAMDRIVE%gho目录的GHO.BAT,而且会死机!!!我不知道会不会是文件方面的原因!
(而且我从%RAMDRIVE%里回到%UD%时!PATH=%UD%;%UD%\DOS又生效了!)
[
Last edited by terse on 2007-4-20 at 12:38 PM ]
第 13 楼
发表于 2007-04-20 12:45 · 中国 黑龙江 哈尔滨 电信
高级用户
★★★
积分 760 发帖 357 注册 2005-10-10 22:33 20年会员 UID 43332
状态 离线
我也不知道对不对,看看是不是这句的问题导致的批处理丢失:
PATH=%PATH%;%RAMDRIVE%gho\;
变量是有一定长度的!如果不是批处理语句的问题,那么就在这里考虑一下吧!
[ Last edited by 0451lym on 2007-4-20 at 12:46 PM ]
第 14 楼
发表于 2007-04-20 22:41 · 中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404 发帖 946 注册 2005-09-08 13:44 20年会员 UID 42345
状态 离线
Originally posted by 0451lym at 2007-4-20 12:45:
我也不知道对不对,看看是不是这句的问题导致的批处理丢失:
PATH=%PATH%;%RAMDRIVE%gho\;
变量是有一定长度的!如果不是批处理语句的问题,那么就在这里 ...
问题在这里:
FOR %%a IN (A: C:) DO IF EXIST %%a SET ud=%%a
%ud%为空 为什么呢?
第 15 楼
发表于 2007-04-20 22:49 · 中国 江苏 苏州 联通
中级用户
★★
我是DOS学者
积分 367 发帖 180 注册 2006-05-14 10:53 20年会员 UID 55507 性别 男 来自 重庆
状态 离线
A: C: 可以用if exist判斷嗎??
應該是不可以的吧.這裡可以自己定義一個文件來判斷,如A:\test.log c:\test.log.這樣應該沒有問題...
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正