中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 14:08
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » 怎样获得当前盘符并保存在文本中?
可打印版本  7,070 / 18
第1楼 chengbiner 发表于 2006-11-18 06:44
初级用户 发帖 44 积分 105
怎样获得当前盘符并保存在文本中?
比如要运行移动盘中的一个软件,但是在不同的机子上盘符会不同!
第2楼 不得不爱 发表于 2006-11-18 06:52
超级版主 发帖 2,044 积分 5,310 来自 四川南充
第3楼 chengbiner 发表于 2006-11-18 06:55
初级用户 发帖 44 积分 105
好象还是不行啊!
第4楼 不得不爱 发表于 2006-11-18 07:07
超级版主 发帖 2,044 积分 5,310 来自 四川南充
再试:(把下面的内容写到BAT文件里执行)
set a=%~0
echo %a:~0,2%>temp.txt
或者用下面的代码:
echo %~d0>temp.txt
第5楼 chengbiner 发表于 2006-11-18 07:09
初级用户 发帖 44 积分 105
谢谢斑竹,已经可以了
第6楼 namejm 发表于 2006-11-18 07:24
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  关于当前盘符的获得,一般有以下三种方案:

  1、cd命令:

  2、for语句扩展:

  3、参数%~0方案:

  当然,还有其他的方案,一般都是用for语句来提取返回值特定位上的字符,而无一例外的都需要通过截取字符的方式来实现(蓝色部分说法不完全准确,具体情况请参考11F的举例)。

[ Last edited by namejm on 2006-11-24 at 08:58 PM ]
第7楼 不得不爱 发表于 2006-11-18 07:38
超级版主 发帖 2,044 积分 5,310 来自 四川南充
%~0不会得到带引号的当前路径啊
第8楼 namejm 发表于 2006-11-18 08:07
荣誉版主 发帖 1,737 积分 5,226 来自 成都
Originally posted by 不得不爱 at 2006-11-17 18:38:
%~0不会得到带引号的当前路径啊

  呵呵,不好意思,看走眼了,我少了个~符号。
第9楼 hxuan999 发表于 2006-11-23 07:10
中级用户 发帖 161 积分 337

 当然,还有其他的方案,一般都是用for语句来提取返回值特定位上的字符,而无一例外的都需要通过截取字符的方式来实现。


好像可以例外,不知道这样行不?

第10楼 namejm 发表于 2006-11-23 07:16
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  %a::=% 语句就是通过去掉显示结果中的冒号来实现的,实质上还是截取了特定位置上的字符。
第11楼 hxuan999 发表于 2006-11-25 04:11
中级用户 发帖 161 积分 337
受以下这个贴的启发,发现了另一个取当前盘符的方法.
请教willsort以及 各位 大哥关于prompt _$T$_

代码如下:


  1. @echo off
  2. for /f "usebackq skip=1 eol=;" %%i in (`"echo exit|%comspec% /k prompt $N$_;"`) do set "d=%%i"
  3. echo 当前盘符为:%d%
  4. pause
hxuan?表ー: 2006-11-24 15:13


还有下面这些代码,可以输出当前盘符,当前路径,当前日期,当前时间,还有版本号,当前也可以把你个性的DOS提符输出来.


  1. @echo off
  2. for /f "usebackq skip=1 eol=; delims=" %%i in (`"echo exit|%comspec% /k prompt $N$_;"`) do set "aaa=%%i"
  3. echo %aaa%
  4. for /f "usebackq skip=1 eol=; delims=" %%i in (`"echo exit|%comspec% /k prompt $D$_;"`) do set "aaa=%%i"
  5. echo %aaa%
  6. for /f "usebackq skip=1 eol=; delims=" %%i in (`"echo exit|%comspec% /k prompt $E$_;"`) do set "aaa=%%i"
  7. echo %aaa%
  8. for /f "usebackq skip=1 eol=; delims=" %%i in (`"echo exit|%comspec% /k prompt $P$_;"`) do set "aaa=%%i"
  9. echo %aaa%
  10. for /f "usebackq skip=1 eol=; delims=" %%i in (`"echo exit|%comspec% /k prompt $T$_;"`) do set "aaa=%%i"
  11. echo %aaa%
  12. for /f "usebackq skip=1 eol=; delims=" %%i in (`"echo exit|%comspec% /k prompt $V$_;"`) do set "aaa=%%i"
  13. echo %aaa%
  14. pause
hxuan?表ー: 2006-11-24 15:19


[ Last edited by hxuan999 on 2006-12-13 at 11:40 AM ]
第12楼 namejm 发表于 2006-11-25 09:54
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  prompt 属于比较冷门的命令了,却还有如此强悍的功能,值得各位重视。不错不错,给 hxuan999 加分奖励。
第13楼 redtek 发表于 2006-11-25 10:20
金牌会员 发帖 1,147 积分 2,902
欣赏~~
hxuan999兄的想像力真丰富~:)
第14楼 electronixtar 发表于 2006-11-25 10:33
铂金会员 发帖 2,672 积分 7,493

prompt 属于比较冷门的命令了,却还有如此强悍的功能,值得各位重视。不错不错,给 hxuan999 加分奖励。

汗一个,想以前的DOS/9x批处理,几乎全部是 prompt 的天下,相关技巧暴多
第15楼 redtek 发表于 2006-11-25 10:59
金牌会员 发帖 1,147 积分 2,902
还可以再新开个 Prompt 的技巧讨论专贴,既能发扬技巧又能多赚积分儿~哈哈……
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023