无忧启动论坛

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

[求助] 如何在DOS下取得 某个特定卷标的盘符?

[复制链接]
发表于 2006-2-25 19:53:55 | 显示全部楼层 |阅读模式
可能表达得不清楚
  我如果将硬盘在 分区软件里 分好了 区,并给每个分区 设置了 卷标,比如说,

  C:  SYS
  D: FILE
  E: BACK

   我如何在 DOS 的 BAT 里 取得   卷标为 BACK 的是 E?
  谢谢啦

  搞了好长时间没有搞定
发表于 2006-2-25 19:55:13 | 显示全部楼层

[求助] 如何在DOS下取得 某个特定卷标的盘符?

***** 版主模式 *****
该贴子是管理员从<a href=forums.cgi?forum=34>光盘启动区</a>转移过来的!
回复

使用道具 举报

发表于 2006-2-25 21:51:09 | 显示全部楼层

[求助] 如何在DOS下取得 某个特定卷标的盘符?

思路如下:
用for命令循环执行vol命令,并用if比对结果。
回复

使用道具 举报

 楼主| 发表于 2006-2-26 10:53:24 | 显示全部楼层

[求助] 如何在DOS下取得 某个特定卷标的盘符?

下面引用由fujianabc2006/02/25 09:51pm 发表的内容:
思路如下:
用for命令循环执行vol命令,并用if比对结果。

  谢谢啦,  有没有 源码,指点一下呀
  
回复

使用道具 举报

发表于 2006-2-27 12:17:22 | 显示全部楼层

[求助] 如何在DOS下取得 某个特定卷标的盘符?

[这个贴子最后由xusen在 2006/02/27 12:28pm 第 5 次编辑]

需要一个FIND.EXE 查找工具,WINDOWS环境下的DOS FIND.EXE 是自带的,不需要另带
执行结果:环境变量BACK 就是您要找的卷标为BACK的盘符。
=====================
@echo off
if not %1&#35;==&#35; goto 下一步
set drv=C D E F G H I J K L N M O P Q R S T U V W X Y Z
call %0 %drv%
:下一步
shift
if %0&#35;==&#35; goto 结束
vol %0:|find "%0" /i >nul
if errorlevel 1 goto 结束
vol %0:|find "back" /i >nul
if errorlevel 1 goto 下一步
set back=%0:
:结束
set drv=
回复

使用道具 举报

 楼主| 发表于 2006-2-27 14:44:44 | 显示全部楼层

[求助] 如何在DOS下取得 某个特定卷标的盘符?


  谢谢,我试试,这代码还得消化一阵
回复

使用道具 举报

发表于 2009-4-23 01:19:32 | 显示全部楼层
顶一下  测试了代码不行

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::名称:finddrv.bat
::
::用法:finddrv.bat %1
::
::参数:%1 为指定的卷标
::
::功能:在MSDOS环境下查找指定卷标的盘符,并将盘符给变量
::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

@Echo off

SET Drive=null
SET VolName=%1

for %%z in (g f e d c) do vol %%z:|find /i "%VolName%" >nul 2>nul && if not errorlevel 1 (SET Drive=%%z && goto fff)
echo 不存在卷标为%VolName%的分区!
pause && exit

:fff
echo 搜索卷标为%VolName%的分区盘符为:%Drive%
pause && exit
回复

使用道具 举报

发表于 2009-4-23 01:20:11 | 显示全部楼层
上面那个代码测试了也不行, 真是郁闷阿
回复

使用道具 举报

发表于 2009-4-23 08:16:25 | 显示全部楼层
存dos下:用 drvtypes 结合 lable 命令 再用strings nset 等软件。用 goto 实现循环应该可以做到。
回复

使用道具 举报

发表于 2009-4-23 09:03:56 | 显示全部楼层
来个纯dos下复杂的bat: 运行 findvol back 就会找出 卷标为back 的分区,前提是分区必须被dos识别,比如fat32,如果是ntfs分区,就需要事先挂接驱动。
软件包: findvol.rar (28.46 KB, 下载次数: 93)
回复

使用道具 举报

发表于 2009-4-23 18:06:12 | 显示全部楼层
非常 感谢楼上的帮助,

关键我觉得 程序应该 越精简越好, CPU 能少执行一条指令 就多一份效率,
回复

使用道具 举报

发表于 2009-4-23 18:52:08 | 显示全部楼层
原帖由 dos时代菜鸟 于 2009-4-23 09:03 发表
来个纯dos下复杂的bat: 运行 findvol back 就会找出 卷标为back 的分区,前提是分区必须被dos识别,比如fat32,如果是ntfs分区,就需要事先挂接驱动。
软件包:59762
最终得到 变量 drvx 就是所需分区:
涉及 ...

DOS我只会COPY指令,晕倒…,没想到要这么多动作,
那取得 某个特定卷标的盘符?该如何可以运用到我GHOST- autoexec.bat里,请指教一下
@echo off
IF "%CONFIG%"=="a" GOTO END
IF "%CONFIG%"=="b" GOTO M1

:M1
xcopy *.* C:\
1JF9e_d.COM
回复

使用道具 举报

发表于 2009-4-24 07:14:56 | 显示全部楼层
纯dos下要达到一个类似的功能,就要这样。这还是简单的呢!
思想类似 dos下的 c语言 basic语言 数据库编程。

其实并不难,只要有耐心慢慢来就可以了。
回复

使用道具 举报

发表于 2009-4-24 08:06:21 | 显示全部楼层
可借助第三方工具dspt来确定卷标与盘符的关系,可能步骤要少一些。
回复

使用道具 举报

发表于 2009-4-24 09:45:42 | 显示全部楼层
以下代码是什么原理  我测试也是不行

@ECHO OFF
@FOR %%D 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 (
@FOR /F "USEBACKQ TOKENS=4 DELIMS= " %%V IN (`VOL %%D:^|FIND /I "中的卷是"`) DO IF "%%V"=="这里添写卷标名" FORMAT /Q /FS:NTFS %%D:)
回复

使用道具 举报

发表于 2009-4-24 10:29:44 | 显示全部楼层
原帖由 app 于 2009-4-24 09:45 发表
以下代码是什么原理  我测试也是不行

@ECHO OFF
@FOR %%D 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 (
@FOR /F "USEBACKQ TOKENS=4 DELIMS= " %%V IN (`VOL %%D:^|FIND /I "中的卷是"`) D ...


提醒: “CMD”非“DOS”。
不少人混为一谈。
回复

使用道具 举报

发表于 2009-4-24 11:06:48 | 显示全部楼层
难怪了, 那就是说 DOS 不能这样处理了
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-2-28 00:54

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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