找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6417|回复: 18

XP下获取光驱盘符

[复制链接]
发表于 2006-12-4 22:24:15 | 显示全部楼层 |阅读模式
我想让XP安装完后,第一次启动时,运行一个CMD文件,以此安装光盘上的一些程序,但是对于如何编写CMD文件,使其能获取正确的光驱盘符很疑惑,还望高手指教。。。
本来先前,我在系统盘根目录下建立 $OEM$ (包括子文件夹 $1、$$),把在系统第一次启动后要安装的程序放入 $1 文件夹下,然后在系统第一次启动后执行的CMD里用 %systemdrive% 变量就能很好的绕过获取光驱盘符的问题。。。但是我发现当 $1 下的文件体积很大的时候,会使安装一次操作系统的时间变得很长——主要就是拷贝 $1 下的文件:L
所以我想干脆不启用 $1 文件夹,让系统直接从光驱上安装。。。这样就产生了XP下获取光驱盘符的问题

[ 本帖最后由 zzl 于 2006-12-4 10:29 PM 编辑 ]
 楼主| 发表于 2006-12-5 12:15:43 | 显示全部楼层
没太明白。。。这个脚本扑获的光驱盘符,附值给了谁?然后又怎样在CMD文件中调用了??
回复

使用道具 举报

发表于 2006-12-5 16:40:43 | 显示全部楼层
试试这个30多K的小工具,直接打开有它的使用说明。先在一个较早的进程启动它,将光驱的盘符写入环境就是,接下来的CMD进程就可以使用这些环境变量了。

SETNTENVAR.RAR

35.57 KB, 下载次数: 125, 下载积分: 无忧币 -2

回复

使用道具 举报

发表于 2006-12-5 17:15:07 | 显示全部楼层
  XP系统下,以管理员权限运行如下代码:

  1. @echo off
  2. :: 找出光驱盘符的演示代码
  3. echo.
  4. echo    以下为光驱盘符:
  5. echo.
  6. setlocal enabledelayedexpansion
  7. for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  8.     set var=%%i
  9.     fsutil fsinfo drivetype !var:~-2!|find /i "CD-ROM">nul && echo !var:~-2!
  10. )
  11. pause>nul
复制代码
回复

使用道具 举报

 楼主| 发表于 2006-12-6 10:34:15 | 显示全部楼层
谢过先。。。
回复

使用道具 举报

发表于 2006-12-6 10:38:27 | 显示全部楼层
原帖由 lxl1638 于 2006-12-5 04:40 PM 发表
试试这个30多K的小工具,直接打开有它的使用说明。先在一个较早的进程启动它,将光驱的盘符写入环境就是,接下来的CMD进程就可以使用这些环境变量了。


呵呵,偶也一直用这个工具
回复

使用道具 举报

发表于 2006-12-7 23:31:45 | 显示全部楼层
老九做出来的东西贴心 好使
回复

使用道具 举报

 楼主| 发表于 2006-12-8 23:51:10 | 显示全部楼层
说明中的第二段种解释的

setntenvar.exe [Variable = [String] ]

这个用法的含义没理解
。。。。。。。
比如说开始我使用了 setntenvar.exe /findcdrom ,而后我想将 %cdrom1% 环境变量删除,那就应该是 setntenvar.exe %cdrom1% ,对吗???或者我想把 %cdrom1% 定义为 E: ,那是不是 setntenvar.exe %cdrom1%=E: ??

说明

说明
回复

使用道具 举报

 楼主| 发表于 2006-12-9 11:19:43 | 显示全部楼层
自己顶一下。。。
回复

使用道具 举报

发表于 2006-12-9 13:49:16 | 显示全部楼层
原帖由 zzl 于 2006-12-8 11:51 PM 发表
说明中的第二段种解释的

setntenvar.exe  ]

这个用法的含义没理解
。。。。。。。
比如说开始我使用了 setntenvar.exe /findcdrom ,而后我想将 %cdrom1% 环境变量删除,那就应该是 setntenvar.exe %cdro ...


叫人怎么帮你啊,先弄清楚 环境变量名环境变量值 的区别
回复

使用道具 举报

 楼主| 发表于 2006-12-9 14:03:30 | 显示全部楼层
。。。我理解的 环境变量名 就是 %cdrom% ,环境变量值 是 E:
那么你能写个例子吗???
比如说我先 setntenvar.exe /findcdrom ,得到 %cdrom% = E:
现在我想改变%cdrom%的值,想%cdrom% = F: ,或者删除%cdrom%的值,那该怎么写cmd命令??
回复

使用道具 举报

发表于 2006-12-9 14:37:07 | 显示全部楼层
原帖由 zzl 于 2006-12-9 02:03 PM 发表
。。。我理解的 环境变量名 就是 %cdrom% ,环境变量值 是 E:
那么你能写个例子吗???
比如说我先 setntenvar.exe /findcdrom ,得到 %cdrom% = E:
现在我想改变%cdrom%的值,想%cdrom% = F: ,或者删除%cd ...


CDROM是变量名,它的值为%cdrom%。如在Windows中,变量WinDir表示系统目录,想将这个变量的值赋给其它变量时是这样的:
Set  NewVar=%WinDir%

结果新的变量 NewVar 的值为 C:\Windows

若用
Set  NewVar=WinDir

结果新的变量 NewVar 的值为 WinDir

就是说要引用某个环境变量的值,必须前后加"%"号。

setntenvar.exe设置环境变量的格式与内部命令 SET 是一致的。

[ 本帖最后由 lxl1638 于 2006-12-9 02:38 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2006-12-9 15:05:41 | 显示全部楼层
。。。明白了,谢拉

不过
setntenvar.exe /findcdrom 后, %cdrom% 为 E:
而后我想
setntenvar.exe cdrom=f:
可是%cdrom% 依旧为 E:
回复

使用道具 举报

发表于 2006-12-9 16:00:15 | 显示全部楼层
原帖由 zzl 于 2006-12-9 03:05 PM 发表
。。。明白了,谢拉

不过
setntenvar.exe /findcdrom 后, %cdrom% 为 E:
而后我想
setntenvar.exe cdrom=f:
可是%cdrom% 依旧为 E:


你退出CMD后再重进CMD看看结果是怎样的。
回复

使用道具 举报

 楼主| 发表于 2006-12-9 17:02:24 | 显示全部楼层
一样的。还是不行啊,不能更改 cdrom 的值
我重起过后再试也是不行!!!我晕,没辙了
我是这样操作的:(我有两个光驱,分别为 E: 、F:,其中 F 是虚拟光驱)
把 setntenvar.exe 放在 D 盘根目录下,然后再建立两个CMD文件 1.cmd 和 2.cmd
1.cmd的内容:
setntenvar.exe cdrom2=e:
2.cmd的内容:
copy %cdrom2%\bootfont.bin d:\
然后我先在 运行 中执行 d:\setntenvar.exe /findcdrom
再依次运行1.cmd和2.cmd,发现%cdrom2%还是 F:
回复

使用道具 举报

发表于 2006-12-9 17:11:06 | 显示全部楼层
%CDROM0%、%CDROMX%这一系列变量是改不了的,就看你怎样利用了,你要用第2光驱就引用%CDROM2%即可。
回复

使用道具 举报

 楼主| 发表于 2006-12-9 19:22:15 | 显示全部楼层
哦。。。原来这样啊。。。那我就不折腾了。。。我也知道用第2光驱就引用%CDROM1%、%CDROM2%,不过是想试试 setntenvar.exe 改变量的功能,所以就发现 setntenvar.exe cdrom2=e: 死活行不通,然后才来问问为何。。。
回复

使用道具 举报

发表于 2006-12-10 02:06:12 | 显示全部楼层
偶用的是最笨的办法,去判断光盘上一个特定的文件存在结果,然后给%cdrom%赋值.虽然有点笨,但是双光驱的时候还是蛮有效果的.
代码:  
set cdrom==
for %a in (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 %a\inst.cmd  set cdrom==%a
%cdrom%\inst.cmd
回复

使用道具 举报

发表于 2006-12-10 02:14:54 | 显示全部楼层
原帖由 it2000 于 2006-12-10 02:06 AM 发表
偶用的是最笨的办法,去判断光盘上一个特定的文件存在结果,然后给%cdrom%赋值.虽然有点笨,但是双光驱的时候还是蛮有效果的.
代码:  
set cdrom==
for %a in (d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s:  ...


是一种办法,但当其它分区存在同名文件时就不准确了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-4-11 12:48

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表