中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-27 18:43
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » 求助,在最后一个盘符建一个文件夹 查看 5,052 回复 27
楼 主 求助,在最后一个盘符建一个文件夹 发表于 2006-09-23 07:03 ·  中国 浙江 台州 电信
初级用户
积分 54
发帖 18
注册 2006-08-26 13:12
19年会员
UID 61314
状态 离线
机器的不同,分区不一样,怎么才能在最后一个分区建一个目录。
2 发表于 2006-09-24 04:38 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
楼主什么好的实现想法吗?

为了兼容纯DOS和WINDOWS下的DOS,for枚举所有驱动器找到最后一个可写的驱动器?为了兼容纯DOS环境不能用VbScript等外部解释型脚本,只能用DOS内部命令。

1、DOS内部命令for枚举所有驱动器盘符
2、if测试枚举出来的盘符是否存在
3、如果存在就在那个盘符上建立你预定的目录名

我帮你做完了,不过最希望你自己做着玩,这样DOS水平提高很快~:)

希望楼主贴上你的实现过程,琢磨它是一件非常好玩的事情~:)


for的枚举与应用方法可以参考看这篇贴子:
==================================
批处理删除所有分区的默认共享
http://www.cn-dos.net/forum/viewthread.php?tid=21133&fpage=4
==================================

if的应用看一下 IF /? 的提示与帮助~:)

知识都是在遇解决不了问题的时候产生突破的~:)
希望楼主尽快做出来~:)
等待楼主讲讲发现和学习感受与精彩片断让大家一起分享~:)
3 发表于 2006-09-25 04:36 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
可以用这个试试:

@echo off
setlocal enabledelayedexpansion
for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
set var=%%i
set drives=!var:~-2!
md !drives!\lxmxn
)

上面倒数第三行的“lxmxn”是我自己定义的文件夹名,你可以自行更改成你想命名的目录。
4 发表于 2006-09-26 03:53 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
”求助,在最后一个盘符建一个文件夹“

执行完后,发现它建lxmxn目录到C盘上去了:)
非常佩服Lxmxn兄的fsutil fsinfo drives应用,所有驱动器一下子全出来了,超级爽~:)
5 发表于 2006-09-26 05:19 ·  IANA 局域网IP(Private-Use)
初级用户
积分 70
发帖 27
注册 2006-09-19 19:23
19年会员
UID 63080
性别 男
来自 河南
状态 离线
大家是不是没有考虑到最后一个盘符是光盘怎么办?

3楼的结果

E:\>for /F "delims=\" %i in ('fsutil fsinfo drives|find /v ""') do (
set var=%i
set drives=!var:~-2!
md !drives!\lxmxn
)
find: invalid predicate `'


[ Last edited by uime on 2006-9-26 at 05:37 ]
6 发表于 2006-09-26 06:20 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
一直等着楼主提问后看到2楼和3楼的启发自己写出来,
别人都写出来和自己写的来的记忆和懂的内容都不一样,
结果楼主失踪了……


让盘符倒着来,第一个测试的可写的驱动器就一定是最后一个可写的盘符。



@REM 其中redtek这个名字为你想要建立的目录名称

@REM CreateFile.Bat:
@REM ==========================================

@ECHO off

FOR %%c 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 %%c: (
MD %%c:\Redtek
GOTO :EOF
)
)


7 发表于 2006-09-26 18:54 ·  IANA 局域网IP(Private-Use)
初级用户
积分 70
发帖 27
注册 2006-09-19 19:23
19年会员
UID 63080
性别 男
来自 河南
状态 离线
Originally posted by redtek at 2006-9-26 06:20:
一直等着楼主提问后看到2楼和3楼的启发自己写出来,
别人都写出来和自己写的来的记忆和懂的内容都不一样,
结果楼主失踪了……


让盘符堮..

如果光驱中有光盘,这个不会执行
如果有用subst虚拟的盘,这个会建在虚拟目录中

[ Last edited by uime on 2006-9-26 at 19:18 ]
8 发表于 2006-09-27 05:22 ·  中国 浙江 台州 椒江区 电信
初级用户
积分 54
发帖 18
注册 2006-08-26 13:12
19年会员
UID 61314
状态 离线
Originally posted by redtek at 2006-9-26 06:20:
一直等着楼主提问后看到2楼和3楼的启发自己写出来,
别人都写出来和自己写的来的记忆和懂的内容都不一样,
结果楼主失踪了……


让盘符堮..


初学,看了一下帮助,有一点不明
goto :eof
是什么意思? goto :eof好像是跳到标签为:eof 处执行,可在整个处理中没有发现这个标签。
9 发表于 2006-09-27 05:22 ·  中国 浙江 台州 椒江区 电信
初级用户
积分 54
发帖 18
注册 2006-08-26 13:12
19年会员
UID 61314
状态 离线
Originally posted by redtek at 2006-9-26 06:20:
一直等着楼主提问后看到2楼和3楼的启发自己写出来,
别人都写出来和自己写的来的记忆和懂的内容都不一样,
结果楼主失踪了……


让盘符堮..


初学,看了一下帮助,有一点不明
goto :eof
是什么意思? goto :eof好像是跳到标签为:eof 处执行,可在整个处理中没有发现这个标签。
10 发表于 2006-09-28 04:09 ·  中国 安徽 宿州 泗县 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
如果在纯Dos中的最后一个盘符是Ram盘怎么办?
11 发表于 2006-09-28 06:19 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
如果正在建目录的时候突然停电了怎么办?

如果最后一个盘正巧遇上了被映射的网络上另一台主机的磁盘怎么办?

如果有常驻内存的某个程序监视系统不让向最后一个盘写内容怎么办?

如果最后一个盘是U盘又开启了写保护怎么办?

如果操作的时候遇到了系统百年不遇的BUG怎么办?

哈哈哈……
12 发表于 2006-09-28 08:09 ·  中国 浙江 衢州 电信
银牌会员
★★★
积分 1,270
发帖 548
注册 2004-05-31 00:00
22年会员
UID 25754
性别 男
状态 离线
for与if是强大啊。
13 发表于 2006-09-28 10:33 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
Originally posted by redtek at 2006-9-26 06:20:
@REM 其中redtek这个名字为你想要建立的目录名称

@REM CreateFile.Bat:
@REM ==========================================

@ECHO off

FOR %%c 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 %%c: (
MD %%c:\Redtek
GOTO :EOF
)
)


  这段代码是有问题的,如果最后一个存在的盘符是光驱的盘符,那么,它就无法创建了。按照楼主的说法,应该是找最后一个可写的盘。那么,就应该写成

@ECHO off

FOR %%c 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 %%c: (
MD %%c:\Redtek 2>nul && GOTO :EOF
)
)
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
zhclvip +2 2007-02-02 08:51
andysky +2 2007-03-15 03:32
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
14 发表于 2006-09-28 21:28 ·  中国 福建 南平 电信
初级用户
积分 197
发帖 33
注册 2003-07-24 00:00
22年会员
UID 7424
性别 男
状态 离线
这上面所说的只能在 FAT16 FAT32 的分区格式上吧
在纯DOS下如果是 硬盘全是NTFS 格式或最后一个盘是NTFS格式就不行了

[ Last edited by Jnwei1202 on 2006-9-28 at 21:36 ]
15 发表于 2006-09-28 22:04 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
那就先加载NTFS驱动
论坛跳转: