中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-18 18:07
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 最后一个分区的盘符怎样表达 查看 1,985 回复 26
16 发表于 2008-07-27 17:54 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
UID 110072
性别 男
状态 离线
在改的帖子里忘了改那一部分…… 郁闷……&更加郁闷……真不好意思……
没脸见人啦……
17 发表于 2008-07-27 18:14 ·  中国 广东 广州 联通
初级用户
★★
积分 167
发帖 80
注册 2005-11-07 05:08
UID 44725
性别 男
状态 离线
Originally posted by 25167241 at 2008-7-27 17:20:
13楼的大侠
我运行XP 的 CMD 程序.
把您的命令贴上去.
提示此时不应有%%a
不要郁闷,解决问题就会得到快乐.



简单的说:
在命令行逐条执行命令是要遇到类似 %%i 这等参数,%是要减少一个的!

[ Last edited by xypcmac on 2008-7-27 at 06:16 PM ]
18 发表于 2008-07-27 18:17 ·  中国 广东 广州 联通
初级用户
★★
积分 167
发帖 80
注册 2005-11-07 05:08
UID 44725
性别 男
状态 离线
我觉得大家有点考虑不周全或误会。

1. 虽然U盘分了两个区(既然分了区那应该是USB-HDD模式),但Windows不一定会分配相邻的两个盘符给这两个U分区。

2. 虽然一般情况下,查找所有盘和软件名可以找出要运行的程序并运行。但如果其它盘也有同样名字的文件呢?


有个笨办法可以避免以上问题并正确找到运行:

由批处理本身取得批处理所在盘的盘符(U盘第一分区),然后利用 Ghost32 或 Dsptw 等第三方工具,由盘符查得对应的U盘,反过来,再由U盘查其最后分区。然后运行所要的软件即可。虽然有点点繁琐,但也行之有效。
19 还差一点 发表于 2008-07-27 18:20 ·  中国 广东 广州 电信
初级用户
积分 28
发帖 12
注册 2008-07-26 20:22
UID 122162
性别 男
来自 广州
状态 离线
13楼的大侠.%%改%,在CMD可以运行了.不过结果只是搜索程序,并不运行程序,
显示的结果是: 从A到Z
(if exist z:\programfile.exe call a:\programfile.exe)
……
(if exist z:\programfile.exe call z:\programfile.exe)
其中A B 肯定是不必用的.
也还运行程序.请加油,你一定成的.谢谢了.
最好击开始 运行 CMD 程序试一试,就更有把握了.
20 发表于 2008-07-27 19:42 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
楼主还是先搞清楚bat和cmd的区别吧
21 发表于 2008-07-27 19:49 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
UID 119451
性别 男
状态 离线
Originally posted by xypcmac at 2008-7-27 06:17 PM:
我觉得大家有点考虑不周全或误会。

1. 虽然U盘分了两个区(既然分了区那应该是USB-HDD模式),但Windows不一定会分配相邻的两个盘符给这两个U分区 ...


此言差已..我就有分2个区的U盘,每次插进USB口Windows都是分配相邻的两个盘符
22 发表于 2008-07-27 19:51 ·  中国 广东 广州 联通
初级用户
★★
积分 167
发帖 80
注册 2005-11-07 05:08
UID 44725
性别 男
状态 离线
Originally posted by 25167241 at 2008-7-27 18:20:
13楼的大侠.%%改%,在CMD可以运行了.不过结果只是搜索程序,并不运行程序,
显示的结果是: 从A到Z
(if exist z:\programfile.exe call a:\programfile.exe)
……
(if exis ...


都说了,像这样的当其他电脑上有同样程序名时,会出现混乱...

就不会是你所要的结果了!不过,你也可以改特殊一点的名字。
23 发表于 2008-07-27 20:03 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
UID 110072
性别 男
状态 离线

发个图片给大家轻松一下 (想起一首歌,如果你觉得轻松就拍拍手…^_^)
关于上面的问题……
用一个已经成功测试的例子表示&同名的机会还是比较小的
而且是调用程序,如果同名,一般都是一样的东西了 也没必要判断最后一个盘了

看代码:
for %a in (b c d e f g h i j k l m n) do (if exist %a:\niubi.exe start %a:\niubi.exe)

关于U盘的分区我不是很了解……

[ Last edited by 523066680 on 2008-7-27 at 08:09 PM ]
24 发表于 2008-07-27 20:13 ·  中国 广东 江门 电信
中级用户
★★
积分 338
发帖 175
注册 2007-10-21 15:30
UID 100351
性别 男
状态 离线
@echo off
for %%i in (Z Y X W V U T S R Q P O N M L K J I H G F E D C) do (
if exist %%i:\nul (
for /f "tokens=3" %%j in ('dir /-c %%i:\') do set freesize=%%j
set last=%%i
if not "!freesize!"=="0" goto last_drive
)
)
goto :eof

:last_drive
echo 最后一个分区是 %last%
md %last%:\001
pause

不是我写的...
25 发表于 2008-07-27 20:58 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
@echo off
for /f %%a in ('"wmic logicaldisk where DriveType="3" get DeviceID |find /v "DeviceID""') do set lastdrive=%%a
echo CMD 下最后分区盘符是 %lastdrive%
26 发表于 2008-07-27 22:42 ·  中国 广东 茂名 电信
中级用户
★★
积分 261
发帖 123
注册 2006-06-06 19:23
UID 56648
状态 离线
2000系统有似没有 wmic
27 发表于 2008-07-28 01:21 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
先假设这样一个情况成立:当U盘分区后系统是按顺序分配给U盘分区盘符的。
那么楼主的问题可以这样解决:

@echo off&setlocal enabledelayedexpansion
set "code=b c d e f g h i j k l m n o p q r s t u v w x y z"
for %%i in ('cd') do set "a=%%~di"
for %%i in (%code%) do (
set /a n+=1&set "_!n!=%%i"
if defined flag goto :next
if /i "%%i" equ "%a:~,-1%" set "flag=a"
)
:next
start "" "!_%n%!:\programfile.exe"
exit
批处理之家新域名:www.bathome.net
论坛跳转: