中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » 求助,在最后一个盘符建一个文件夹
« [1] [2] »
作者:
标题: 求助,在最后一个盘符建一个文件夹 上一主题 | 下一主题
yefenghome
初级用户




积分 54
发帖 18
注册 2006-8-26
状态 离线
『楼 主』:  求助,在最后一个盘符建一个文件夹

机器的不同,分区不一样,怎么才能在最后一个分区建一个目录。

2006-9-23 07:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 2 楼』:  

楼主什么好的实现想法吗?

为了兼容纯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   /?    的提示与帮助~:)

知识都是在遇解决不了问题的时候产生突破的~:)
希望楼主尽快做出来~:)
等待楼主讲讲发现和学习感受与精彩片断让大家一起分享~:)

2006-9-24 04:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:  

可以用这个试试:

@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”是我自己定义的文件夹名,你可以自行更改成你想命名的目录。

2006-9-25 04:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 4 楼』:  

”求助,在最后一个盘符建一个文件夹“

执行完后,发现它建lxmxn目录到C盘上去了:)
非常佩服Lxmxn兄的fsutil fsinfo drives应用,所有驱动器一下子全出来了,超级爽~:)

2006-9-26 03:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uime
初级用户





积分 70
发帖 27
注册 2006-9-19
来自 河南
状态 离线
『第 5 楼』:  

大家是不是没有考虑到最后一个盘符是光盘怎么办?

3楼的结果

  Quote:
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 ]

2006-9-26 05:19
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 6 楼』:  

一直等着楼主提问后看到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
    )
)


2006-9-26 06:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uime
初级用户





积分 70
发帖 27
注册 2006-9-19
来自 河南
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by redtek at 2006-9-26 06:20:
一直等着楼主提问后看到2楼和3楼的启发自己写出来,
别人都写出来和自己写的来的记忆和懂的内容都不一样,
结果楼主失踪了……


让盘符堮..

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

[ Last edited by uime on 2006-9-26 at 19:18 ]

2006-9-26 18:54
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
yefenghome
初级用户




积分 54
发帖 18
注册 2006-8-26
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by redtek at 2006-9-26 06:20:
一直等着楼主提问后看到2楼和3楼的启发自己写出来,
别人都写出来和自己写的来的记忆和懂的内容都不一样,
结果楼主失踪了……


让盘符堮..

初学,看了一下帮助,有一点不明
goto :eof
是什么意思? goto :eof好像是跳到标签为:eof 处执行,可在整个处理中没有发现这个标签。

2006-9-27 05:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yefenghome
初级用户




积分 54
发帖 18
注册 2006-8-26
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by redtek at 2006-9-26 06:20:
一直等着楼主提问后看到2楼和3楼的启发自己写出来,
别人都写出来和自己写的来的记忆和懂的内容都不一样,
结果楼主失踪了……


让盘符堮..

初学,看了一下帮助,有一点不明
goto :eof
是什么意思? goto :eof好像是跳到标签为:eof 处执行,可在整个处理中没有发现这个标签。

2006-9-27 05:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chujiafu
银牌会员





积分 1329
发帖 591
注册 2004-5-26
来自 安徽 宿州
状态 离线
『第 10 楼』:  

如果在纯Dos中的最后一个盘符是Ram盘怎么办?

2006-9-28 04:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 11 楼』:  

如果正在建目录的时候突然停电了怎么办?

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

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

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

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

哈哈哈……

2006-9-28 06:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
weilong888
银牌会员




积分 1270
发帖 548
注册 2004-5-31
状态 离线
『第 12 楼』:  

for与if是强大啊。

2006-9-28 08:09
查看资料  发送邮件  发短消息 网志  OICQ (314295922)  编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 13 楼』:  



  Quote:
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
    )
)


   此帖被 +4 点积分    点击查看详情   
评分人:【 zhclvip 分数: +2  时间:2007-2-2 08:51
评分人:【 andysky 分数: +2  时间:2007-3-15 03:32




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-28 10:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Jnwei1202
初级用户




积分 197
发帖 33
注册 2003-7-24
状态 离线
『第 14 楼』:  

这上面所说的只能在 FAT16 FAT32 的分区格式上吧
在纯DOS下如果是 硬盘全是NTFS 格式或最后一个盘是NTFS格式就不行了

[ Last edited by Jnwei1202 on 2006-9-28 at 21:36 ]

2006-9-28 21:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 15 楼』:  

那就先加载NTFS驱动

2006-9-28 22:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: