中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » dos如何得到系统的最后一个盘符的下一个字母
作者:
标题: dos如何得到系统的最后一个盘符的下一个字母 上一主题 | 下一主题
cxfaa
初级用户





积分 64
发帖 23
注册 2007-1-16
状态 离线
『楼 主』:  dos如何得到系统的最后一个盘符的下一个字母

dos如何得到系统的最后一个盘符的下一个字母,如本机有cdefhi个盘,其中i为光驱,现我想设虚拟光驱,其盘符应为i的下一个字符j,由于不同的机子最后一个盘的字母不同,请问如何才能得到最后一个盘符的下一个字母

2008-5-19 11:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 2 楼』:  

纯DOS下??

2008-5-19 11:47
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
zqz0012005
中级用户




积分 297
发帖 135
注册 2006-10-21
状态 离线
『第 3 楼』:  

其实我觉得批处理新手最先想搞清楚的问题是CMD与DOS的区别(反正当初我是这样)

CMD下的批处理:
@echo off
setlocal EnableDelayedExpansion
set n=4
for /f "delims=驱动器ABC:\ " %%d in ('fsutil fsinfo drives^|more') do (set /a n+=1)
set "num= abcdefghijklmnopqrstuvwxyz"
for /l %%i in (0 1 26) do set "drive%%i=!num:~%%i,1!"
echo !drive%n%!


2008-5-19 12:40
查看资料  发短消息 网志  OICQ (411976538)  编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 4 楼』:  

如果是CMD的话,考虑全一些
@echo off &&setlocal enabledelayedexpansion
set "all=abcdefghijklmnopqrstuvwxyz"
for /f "skip=1 delims=" %%i in ('wmic logicaldisk get caption') do set drive=%%i
set b=%drive:~0,1%
if /i "%b%"=="a" echo 你电脑就一个A盘?不可能吧&&pause
if /i "%b%"=="z" echo 已经是最后一个盘了,下一个我也不知道是什么盘&&pause
for /f "delims=%b% tokens=2" %%i in ("%all%") do (
set a=%%i
echo The next number is !a:~0,1!
)
pause


2008-5-19 13:05
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
cxfaa
初级用户





积分 64
发帖 23
注册 2007-1-16
状态 离线
『第 5 楼』:  

4楼你的这段代码好象有问题,不会显示是下一个盘符是什么
@echo off &&setlocal enabledelayedexpansion
set "all=abcdefghijklmnopqrstuvwxyz"
for /f "skip=1 delims=" %%i in ('wmic logicaldisk get caption') do set drive=%%i
set b=%drive:~0,1%
if /i "%b%"=="a" echo 你电脑就一个A盘?不可能吧&&pause
if /i "%b%"=="z" echo 已经是最后一个盘了,下一个我也不知道是什么盘&&pause
for /f "delims=%b% tokens=2" %%i in ("%all%") do (
set a=%%i
echo The next number is !a:~0,1!
)
pause

2008-5-19 15:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  

大小写的原因,你把小写改成大写就行了。
set "all=ABCDEFGHIJKLMNOPQRSTUVWXYZ"



2008-5-19 15:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 7 楼』:  


@echo off
set "num=abcdefghijklmnopqrstuvwxyz"
for /f "delims=:" %%a in ('fsutil fsinfo drives^|more') do set "n=%%a"
call set var=%%num:*%n%=%%
echo 最后一个盘的下一个盘符是  %var:~0,1%  盘
pause




致精致简!
2008-5-19 21:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 8 楼』:  

纯DOS下(自己测试):
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:\nul set Finally=%%i:




2008-5-20 00:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 9 楼』:  

楼上的应该这样吧 改一下
@echo off
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 not exist %%i:\nul set x=%%i:\&goto lp
:lp
echo %x%
pause

[ Last edited by terse on 2008-5-20 at 12:55 AM ]



简单!简单!再简单!
2008-5-20 00:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 10 楼』:  

楼上两位的代码没能包含光驱盘符,可能无法满足楼主的需要吧。



2008-5-20 01:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Jneny
高级用户

中國DOS聯盟常任參議员


积分 686
发帖 318
注册 2005-11-4
状态 离线
『第 11 楼』:  

9楼的合适点。居然是盘符set x=%%i:



. 繽紛色彩閃出的美麗是因為它沒有分開每種色彩...>/

    我的百度空间: BEYOND超越        为什么用DOS  
2008-5-20 03:11
查看资料  发送邮件  发短消息 网志  OICQ (290256061)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 12 楼』:  

11楼能说说自己的测试环境吗?我这里测试的时候可以返回结果。
C:\test>test.bat
D:\
Press any key to continue . . .



2008-5-20 09:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Jneny
高级用户

中國DOS聯盟常任參議员


积分 686
发帖 318
注册 2005-11-4
状态 离线
『第 13 楼』:  

测试了下,QEMU 0.8+ msdos7.1   


&在DOS里识别不了   奇怪了,以前没有发现。


autoexec.bat

set  dev=c d e f g ... z
call findcd.bat %dev%


findcd.bat

set cdrom=
:1
if  %1*==* goto error
if not exist %1:\nul goto setcd
shift
goto 1

:setcd
set cdrom=%1:
SHSUCDX /D:IDE-CD,%1
echo 你的光驱是 %cdrom%
goto end

:error
echo   不能找到多余的盘符。
:end
set dev=

[ Last edited by Jneny on 2008-5-21 at 12:24 AM ]



. 繽紛色彩閃出的美麗是因為它沒有分開每種色彩...>/

    我的百度空间: BEYOND超越        为什么用DOS  
2008-5-20 18:03
查看资料  发送邮件  发短消息 网志  OICQ (290256061)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: