无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 8316|回复: 19
打印 上一主题 下一主题

怎样在批处理文件里分别取得盘符和路径?谢谢!

[复制链接]
跳转到指定楼层
1#
发表于 2006-11-15 16:05:10 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
打开批处理文件 book.bat 的路径是  E:\Tools\pub3

怎样获得  E:\Tools\pub3

又怎样从中取得  E:  和  Tools\pub3  

谢谢啦!

[ 本帖最后由 小妹 于 2006-11-15 06:12 PM 编辑 ]
20#
发表于 2006-11-28 16:28:54 | 只看该作者
又学到了
回复

使用道具 举报

19#
 楼主| 发表于 2006-11-27 18:54:53 | 只看该作者
顶起来
回复

使用道具 举报

18#
发表于 2006-11-17 13:49:37 | 只看该作者
在纯dos下面,系统自带的很多命令功能都是很弱的,包括 for、prompt、if ......
回复

使用道具 举报

17#
发表于 2006-11-17 13:38:40 | 只看该作者
echo %cd% 与 echo %prompt% 在纯dos只能 告诉你 echo is on(回显已经打开)!
建议用第三方程序完成...
回复

使用道具 举报

16#
发表于 2006-11-17 13:12:43 | 只看该作者
  无论是 cd、echo 还是 prompt,都是纯DOS下的内部命令,居然连 echo %cd% 都是空白,那就错得有点离谱了,除了质疑程序的完整性和工作环境之外,我实在是没什么可以质疑的了,哪位再来找找原因吧。
回复

使用道具 举报

15#
 楼主| 发表于 2006-11-16 13:36:25 | 只看该作者
原帖由 namejm 于 2006-11-16 01:09 PM 发表
  那我就没办法了,实在不行,那我就只能怀疑你的电脑有问题了;如果还不是电脑的问题,那我就只好怀疑你的人品问题了^_^



不是吧? namejm 兄,别吓唬我,

不过,我找了一台尘封已久的、装有 Windows ME 的机子,进入它的  MS-DOS  方式,

echo %cd%  显示还是空白。

好像只有在  XP  里才正常?
回复

使用道具 举报

14#
发表于 2006-11-16 13:09:14 | 只看该作者
  那我就没办法了,实在不行,那我就只能怀疑你的电脑有问题了;如果还不是电脑的问题,那我就只好怀疑你的人品问题了^_^
回复

使用道具 举报

13#
 楼主| 发表于 2006-11-16 12:33:25 | 只看该作者
原帖由 namejm 于 2006-11-16 10:03 AM 发表


  今天看了一下DOS6.62下的内部命令,发现 cd 就是内部命令啊,不可能在 7.1 又被取消了吧?目前怀疑你的DOS7.1有问题。



好不容易在老同志那里找到几张启动软盘,

有 MS-DOS6.21、PC-DOS7.0、Win98、WinME

引导后,执行该"批处理文件",%cd% 仍显示空白

可能不是 DOS 本身的问题.
回复

使用道具 举报

12#
发表于 2006-11-16 10:03:36 | 只看该作者
原帖由 小妹 于 2006-11-15 07:21 PM 发表
谢谢  namejm  兄!

在 XP 系统下正常,但在 DOS 7.1 下,可能 %cd% 没取到值,所以

echo %cd%
echo %cd:~0,1%
echo %cd:~,2%
显示都是空的

还要麻烦您再想想办法,谢谢啦!


  今天看了一下DOS6.62下的内部命令,发现 cd 就是内部命令啊,不可能在 7.1 又被取消了吧?目前怀疑你的DOS7.1有问题。
回复

使用道具 举报

11#
发表于 2006-11-15 22:47:24 | 只看该作者
  没有纯DOS环境,没法测试,请试试如下代码:

  1. @echo off
  2. echo.|%comspec% /k prompt $p>test.txt
复制代码
回复

使用道具 举报

10#
 楼主| 发表于 2006-11-15 20:48:10 | 只看该作者
谢谢!

不过,怎样赋值啊?

echo %PROMPT $P%
显示也是空的
回复

使用道具 举报

9#
发表于 2006-11-15 20:09:54 | 只看该作者
  我对纯DOS下的批处理十分陌生,也没有纯DOS环境可作试验。如果 cd 不是内部命令的话,可以试一下prompt——prompt应该是内部命令了吧?
  以下是 prompt 在XP下的帮助信息:

  1. 更改 cmd.exe 命令提示符。

  2. PROMPT [text]

  3.   text    指定新的命令提示符。

  4. 提示符可以由普通字符及下列特定代码组成:

  5.   $A   & (短 and 符号)
  6.   $B   | (管道)
  7.   $C   ( (左括弧)
  8.   $D   当前日期
  9.   $E   Escape code (ASCII 码 27)
  10.   $F   ) (右括弧)
  11.   $G   > (大于符号)
  12.   $H   Backspace (擦除前一个字符)
  13.   $L   < (小于符号)
  14.   $N   当前驱动器
  15.   $P   当前驱动器及路径
  16.   $Q    = (等号)
  17.   $S     (空格)
  18.   $T   当前时间
  19.   $V   Windows XP 版本号
  20.   $_   换行
  21.   $$   $ (货币符号)

  22. 如果命令扩展名被启用,PROMPT 命令会支持下列格式化字符:

  23.   $+   根据 PUSHD 目录堆栈的深度,零个或零个以上加号(+)字符;
  24.        每个被推的层有一个字符。

  25.   $M   如果当前驱动器不是网络驱动器,显示跟当前驱动器号或
  26.        空字符串有关联的远程名。
复制代码
回复

使用道具 举报

8#
发表于 2006-11-15 20:08:28 | 只看该作者
%CD% - 扩展到当前目录字符串。

%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。

%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。

%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。

%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。

%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。

%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。

以上这些变量都是 cmd 环境下的,dos就无能为力了。
回复

使用道具 举报

7#
 楼主| 发表于 2006-11-15 19:33:58 | 只看该作者
原帖由 namejm 于 2006-11-15 07:27 PM 发表
  难道 cd 不是内部命令?如果不是内部命令的话,那我就无能为力了。


还得麻烦您不辞劳苦.
回复

使用道具 举报

6#
发表于 2006-11-15 19:27:19 | 只看该作者
  难道 cd 不是内部命令?如果不是内部命令的话,那我就无能为力了。
回复

使用道具 举报

5#
 楼主| 发表于 2006-11-15 19:21:08 | 只看该作者
谢谢  namejm  兄!

在 XP 系统下正常,但在 DOS 7.1 下,可能 %cd% 没取到值,所以

echo %cd%
echo %cd:~0,1%
echo %cd:~,2%
显示都是空的

还要麻烦您再想想办法,谢谢啦!
回复

使用道具 举报

4#
发表于 2006-11-15 18:30:13 | 只看该作者
  对纯DOS下的批处理我非常陌生,如果支持字符位截取的话,可以用下面的代码:

  1. @echo off
  2. echo 当前的完整路径是 %cd%
  3. echo 当前盘符是 %cd:~0,1%
  4. echo 截取到的路径是 %cd:~,2%
  5. pause
复制代码

  如果不支持字符位的截取,暂时就只能取到 "盘符:\" 的格式,请试用下面的代码:

  1. @echo off
  2. set route=%cd%
  3. cd\
  4. echo %cd%
  5. cd %route%\
  6. echo %cd%
  7. pause
复制代码

[ 本帖最后由 namejm 于 2006-11-15 07:29 PM 编辑 ]
回复

使用道具 举报

3#
 楼主| 发表于 2006-11-15 18:07:53 | 只看该作者
谢谢  namejm  兄!

在 XP 系统下通过,

但在 DOS 7.1 下报错, 我是想在 DOS 下使用,

请再想想办法,谢谢啦!
回复

使用道具 举报

2#
发表于 2006-11-15 17:32:17 | 只看该作者
  请试如下代码(XP系统下测试通过):

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ("%cd%") do (
  4.     set str=%%~pni
  5.     echo 当前盘符是 %%~di
  6.     echo 当前路径是 !str:~1!
  7. )
  8. pause
复制代码

[ 本帖最后由 namejm 于 2006-11-15 05:36 PM 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-15 21:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表