![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-15 11:03 |
共 47,813 主题排行 / 349,903 发帖 / 今日 1 篇 / 48,257 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » 怎样在批处理文件里分别取得盘符和路径?谢谢! |
| 可打印版本 5,055 / 25 |
| 第1楼 Sororal | 发表于 2006-11-16 09:02 |
| 初级用户 发帖 13 积分 35 | |
|
怎样在批处理文件里分别取得盘符和路径?谢谢! 打开批处理文件 book.bat 的路径是 E:\Tools\pub3
怎样获得这个 E:\Tools\pub3 又怎样从中取得 E: 和 Tools\pub3 谢谢啦! |
|
| 第2楼 0451lym | 发表于 2006-11-16 12:51 |
| 高级用户 发帖 357 积分 760 | |
|
有个小命令好象是DIRT.COM可以满足你的要求!
|
|
| 第3楼 lxmxn | 发表于 2006-11-16 16:16 |
| 版主 发帖 4,938 积分 11,386 | |
|
如果是CMD批处理文件的话,可以在文件中加入以下代码试试: |
|
| 第4楼 Sororal | 发表于 2006-11-16 22:10 |
| 初级用户 发帖 13 积分 35 | |
Originally posted by lxmxn at 2006-11-16 16:16: |
|
| 第5楼 Sororal | 发表于 2006-11-16 22:21 |
| 初级用户 发帖 13 积分 35 | |
Originally posted by 0451lym at 2006-11-16 12:51: 谢谢 0451lym 兄! 没搜索到 DIRT.COM , 给发一个好吗 Sororal@21cn.com 谢谢啦! |
|
| 第6楼 Climbing | 发表于 2006-11-16 22:46 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
如果批处理在搜索路径中(而不是当前目录下),恐怕lxmxn兄的解决方案也是无效的。
纯dos环境有一个fpath的命令,就是用来查找当前命令所在的路径。但对其结果还要再进行处理才能分离出其中的盘符和路径。 http://nufans.net/clone/dostools/fpath.com |
|
| 第7楼 Sororal | 发表于 2006-11-16 23:10 |
| 初级用户 发帖 13 积分 35 | |
Originally posted by Climbing at 2006-11-16 22:46: 谢谢 解兄! 还得麻烦您教我具体的用法。谢谢啦! |
|
| 第8楼 DOSforever | 发表于 2006-11-17 00:16 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
如果不考虑复杂情况的话,你的这个问题可以说就是一个字符串处理的问题。可以用 4DOS 的 @instr 变量函数
@instr[0,2,E:\Tools\pub3] 提取出 "E:" 字符串 @instr[3,,E:\Tools\pub3] 提取出 "Tools\pub3" 字符串 |
|
| 第9楼 Sororal | 发表于 2006-11-17 01:51 |
| 初级用户 发帖 13 积分 35 | |
Originally posted by DOSforever at 2006-11-17 00:16: 谢谢 DOSforever 兄! 不过,Book.bat 不一定就在 E:\Tools\pub3 中,也可能在其他目录里, 所以,E:\Tools\pub3 要先求得。 |
|
| 第10楼 DOSforever | 发表于 2006-11-17 02:04 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
如果这样的话,那我还没明白你的要求。你到底要干什么?你的意思是说要让一个 BATCH 自动去找到 Book.bat 所在的 E:\Tools\pub3 或其它目录的路径?
|
|
| 第11楼 0451lym | 发表于 2006-11-17 04:48 |
| 高级用户 发帖 357 积分 760 | |
Originally posted by Sororal at 2006-11-16 22:21: DIRT使用说明如下: Dirt.COM FileName.Ext (Ver 1.15) (|)] HH:MM:SS] 注意:本程序的设置环境变量的功能,在下面这些系统中无法正常运行。 winXP,win2000,还有在Virtual PC中虚拟的任何系统 无论是否找到符合条件的文件,Dirt.COM在退出的时候,都会设置 环境变量DirtRet:Fail表示没有找到文件,Success表示找到文件。 ===================================================== Ver 1.15 更新日期 2005-11-07 升级说明: (1)、修正上一版本在“不带路径和文件名”搜索时直接从根目录 查找的错误。 (2)、给原先的参数YYYY-MM-DD]增加自动计算日期的功能。 例子: Rem 找昨天修改过的所有文件 dirt *.* /d:(-2) 在最后面那个有点长的例子,因为现在增加了“自动计算日期”的功能, 所以可以简化成下面这样: @echo off rem ============================================ rem 这个批处理的作用是删除d:\datafile里面 rem 最后一次修改是7天之前(不包括7天)的 rem 所有文件(包括所有子目录里的文件) rem ============================================ attrib/s d:\datafile\*.* -h -r -s :Loop dirt.com /d:-(-7) d:\datafile\*.* /q if %DirtRet%==Fail goto end del %FPath%\%FName% goto Loop :end ===================================================== Ver 1.14 更新日期 2005-10-29 升级说明: (1)、修正上一版本在根目录搜索时找不到任何文件的错误。 (2)、给的功能增加带返回码退出的功能。 这样就能在2000或xp中使用该功能。目录存在,返回1, 不存在,返回0。 例子: 判断是否存在d:\aa,如果不存在就建立,并进入 @echo off dirt /dir:d:\aa if errorlevel 1 goto exist echo make d:\aa md d:\aa :exist cd d:\aa ===================================================== Ver 1.13 更新日期 2005-10-14 升级说明: (1)、修正上一版本中对“*.*”的错误分析。 (2)、增加参数 将找到的前10个文件保存下面的环境变量中 O2E_DriverX,O2E_PathX,O2E_FNameX 分别保存盘符、路径、文件名,其中最后的X是序号, 由0至9代替,如果查找的是目录,则不会设置O2E_FNameX (3)、增加参数 在查找到的文件或目录里,一个找出时间是最早或最晚的, 并保存下面的环境变量中,FPath,FName furthest是查找时间是最早的文件或目录 latest则相反 (4)、增加参数 Dos系统的主环境变量列表的长度有限,因此,要学会清理垃圾。 该功能就是清除由该程序产生的所有环境变量。 (注:由该程序产生的环境变量,无法用Dos的Set命令 清除或修改,因为Set命令不支持带有小写字母的变量名) 例子: rem 查找D:下修改时间最晚的文件,并显示出来 dirt d:\*.* /time:latest echo %FPath%\%FName% rem 查找D:下创建时间最早的目录,并显示出来 dirt d:\*.*\ /time:furthest echo %FPath% ===================================================== Ver 1.12 更新日期 2005-09-22 升级说明: (1)、改正“搜索路径分析”中一些错误。 (2)、增加文件夹搜索的功能。支持除之外的 所有参数。 但它找的是目录的“创建时间”,跟查找文件不同(查找文件是 按文件的“修改时间”),所以当目录被改名后,它的创建时间 不会改变。 在快捷模式中,将向环境变量FPath中写入包含要搜索 的文件夹在内的全路径,而不会设置FName 用法是:在路径最后加上斜杆,具体方法看下面的例子 例子: dirt d:\ghost8\ /q 在D盘搜索一个叫“ghost8”的文件夹,如果找到就进入 @echo off rem 注意ghost8后面一定要加上\ rem 不然就会变成是搜索文件 dirt d:\ghost8\ /q if == goto notexist cd %FPath% goto end :notexist echo 没有找到该目录 :end ===================================================== Ver 1.11 更新日期 2005-09-18 新增功能介绍: 判断某个文件夹是否存在,并设置环境变量Dir:Exist表示存在, NotExist表示不存在 例子: 判断是否存在d:\aa,如果不存在就建立,并进入 @echo off dirt /dir:d:\aa if == goto exist md d:\aa :exist cd d:\aa ===================================================== Ver 1.1 新增功能介绍: 无论是否找到符合条件的文件,Dirt.COM在退出的时候,都会设置 环境变量DirtRet:Fail表示没有找到文件,Success表示找到文件。 在该版本中,还修正了1.0版中参数位置不能随意改变的错误。 作用跟dir命令的/w一样,每行显示5个文件名。 开启快捷模式,只要找到有一个符合条件的文件,立即结束查找。 并且会在环境变量FPath和FName中,分别写进文件路径和文件名。 另外,该程序现在编译成.com文件,它的体积比原先的dirt.exe 小了一半。 ===================================================== 例子: 找出D盘中的Tc.exe文件,如果找到就直接运行,并打开D盘 根目录下的文件try.c,如果没有找到就显示提示信息。 @echo off Dirt d:\tc.exe /Q if %DirtRet%==Fail goto NoFind d: cd %fpath% %fname% d:\try.c goto quit :NoFind echo. echo. echo 在D盘没有找到tc.exe :quit ===================================================== Ver 1.0 的功能: YYYY-MM-DD] 指定日期,必须够位数,如: /d:2004-05-01 不能写成 /d:2004-5-1 里面的 是只比该日期更晚或更早 如:/d:-2004-05-01 搜索2004-05-01以前的文件 HH:MM:SS] 参考日期格式 时间和日期可以一起使用 搜索子目录的最多的层数,最多为两为数(即99), /L:0 不搜索子目录 默认为所有层 ==================================================== 另一个例子: @echo off rem ============================================ rem 这个批处理的作用是删除d:\datafile里面 rem 最后一次修改是7天之前(不包括7天)的 rem 所有文件(包括所有子目录里的文件) rem ============================================ rem ============================================ rem 得到7天前的日期 rem 如果今天是8月25,则7天前是日期是 8月18日 rem ============================================ GetInfo.COM /d:-7 set theDay=%year%-%mon%-%day% rem ============================================ rem 这是在D:\datafile中搜索8天前(含8天)修改过的文件 rem 即8月17日 及 之前 修改的文件 rem ============================================ attrib/s d:\datafile\*.* -h -r -s :Loop dirt.com /d:-%theDay% d:\datafile\*.* /q if %DirtRet%==Fail goto end del %FPath%\%FName% goto Loop :end 附件 Dirt.zip (15.92 KiB) |
|
| 第12楼 0451lym | 发表于 2006-11-17 04:52 |
| 高级用户 发帖 357 积分 760 | |
|
另外一个同一作者的小软件非常实用,但是可惜的是不能清除变量!
GetInfo.COM ver 1.2 /T Get current date and time. And It will modify follow environment variable. year,mon,day,wday hour,min,sec /C Get the first CDRom. And It will modify follow environment variable. CDRom /D It will modify follow environment variable. year,mon,day,wday /G:n,filename Get the String from the text file. The String must be short then 2048 Byte! It will modify follow environment variable. GetString,TheString /Cmp:x,y x=y return 0 x<y return 1 x>y return 2 ===================================================== 版本 1.2 更新日期:2005-10-16 功能介绍: 比较两个数,并返回一个数值 x=y return 0 x<y return 1 x>y return 2 例子: 比较12和13,并显示结果 @echo off getinfo /cmp:12,13 if errorlevel 2 goto big if errorlevel 1 goto small if errorlevel 0 goto equ goto end :big echo x bigger than y goto end :small echo x smaller than y goto end :equ echo x = y :end 判断今天的日期是否跟设定的日期相同 @echo off getinfo /t set today=%Year%%Mon%%Day% getinfo /cmp:%today%,20051016 if errorlevel 2 goto big if errorlevel 1 goto small if errorlevel 0 goto equ goto end :big echo 已过了设定的日期 goto end :small echo 还没有到设定的日期 goto end :equ echo 今天就是设定的日期 :end ===================================================== 版本 1.1 更新日期:2005-06-24 功能介绍: 取得当前系统的日期和时间,并设置下列环境变量。 year:年 mon:月 day:日 wday:星期几(星期天是7) hour:时 min:分 sec:秒 取得第一个光驱的盘符,并设置环境变量CDRom。 如果有光驱,设置为光驱的盘符。 如果没有光驱,设置为NoCDRom 将当前系统的日期与所指定的days进行计算,得到另一个日期,并设置下列环境变量。 year:年 mon:月 day:日 wday:星期几(星期天是7) 例子: GetInfo.com /d:-1 得到昨天的日期 GetInfo.com /d:+1 得到明天的日期 从指定的文本文件里面,取得第n行的内容,将内容保存在TheString中, 如果该行的字符串长度大于2048个字符,就只取2048个字符。 成功时GetString=TRUE,否则,GetString=FALSE 例子: GetInfo.com /g:5,D:\A.TXT 得到D:\A.TXT中第5行的内容 另外,该程序现在编译成.com文件,它的体积比原先的GetInfo.exe 小了一半。 附件 Getinfo.zip (13.14 KiB) |
|
| 第13楼 Sororal | 发表于 2006-11-17 05:59 |
| 初级用户 发帖 13 积分 35 | |
|
谢谢 0451lym 兄!
认真学习学习。 |
|
| 第14楼 lizaoyou | 发表于 2007-01-30 12:42 |
| 中级用户 发帖 85 积分 210 来自 广东广州 | |
| 第15楼 zybird | 发表于 2007-02-01 01:44 |
| 中级用户 发帖 53 积分 240 | |
|
dirt.com
Ver 1.16 (只是一点点改进,没有增加功能) 更新日期 2007-01-01 升级说明: 当dirt工作时,按Esc,马上退出。 我在实际使用中,很多次,当dirt在搜索文件或目录时,我突然想到解决问题的方法, 想立即终止dirt当前的工作,但用Ctrl+C,或Ctrl+Break都没有效果,很郁闷。 在windows中的Dos命令行使用,则随时可以用Ctrl+Break终止,而纯dos则不行。 所以,我给dirt.com增加了随时退出的功能。 下载网址 http://www.sendsong.cn/soft/ |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |