中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何把环境变量path中的路径逐个读出来?
作者:
标题: [已结]如何把环境变量path中的路径逐个读出来? 上一主题 | 下一主题
wentimao
初级用户





积分 110
发帖 27
注册 2006-6-3
状态 离线
『楼 主』:  [已结]如何把环境变量path中的路径逐个读出来?

如量,我要在这此目录里找一个文件,只要有一个路径中能找到需要的文件,就停止找

[ Last edited by willsort on 2006-6-14 at 17:36 ]



xp,cmd
2006-6-3 22:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 2 楼』:  

可以试试下面这个批处理程序:

@echo off
set i=1
:loop
echo %path%|lmod /b; @set p=[$%i%]>tmp.bat
call tmp.bat
if "%p%"=="" goto end
echo %p%
expr %i% + 1|lmod @set i=[]>tmp.bat
call tmp.bat
goto loop
:end
set i=
set p=
if exist tmp.bat del tmp.bat

经测试,在DOS和WinXP命令行下都可以使用,不过需要用到LMOD和EXPR两个工具。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2006-6-3 23:48
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 3 楼』:  

厉害啊!我都看不懂lmod,expr用法和执行后的效果?收藏下学习学习....

2006-6-4 00:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 4 楼』:  

如果是 cmd 命令行下,可以试试下面的代码。
@echo off
for %%i in (test.txt) do if exist %%~$PATH:i set x=%%~$PATH:i
if "%x%" == "" (
        echo 无此文件!
) else (
        echo %x%
        )




  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2006-6-4 01:48
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 5 楼』:  

Re wentimao:

      纯DOS下方案除了 Wengier 的第三方工具方案之外,还有更简单的方案:
@echo off
if "%1"=="" for %%p in ("%path%") do if exist "%%p\filename.ext" %0 "%%p"
set filepath=%1
Re Wengier:

      你的代码中似乎缺少判断文件存在的语句,难道是要让楼主自己寻找插入的位置吗?

Re fastslz:

      lmod 是个文本行过滤与编辑工具,expr 是个表达式计算工具。

Re 无奈何:

      代码中的 if exist %%~$PATH:i 似属冗余?



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-6-6 23:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by willsort at 2006-6-6 11:15 PM:
Re wentimao:

      纯DOS下方案除了 Wengier 的第三方工具方案之外,还有更简单的方案:

[code]
@echo off
if "%1"=="" for %%p in ("%path%" ...

这与对楼主的帖子意思的理解有关吧。楼主帖子的标题是“如何把环境变量path中的路径一个一个的读出来?”,而我上面给的批处理做的正是这个,即编写一个将环境变量path中的路径一个一个的读出来并在屏幕上显示的程序,而上面那个所谓“更简单的方案”则并不是做这个(当然,可以简单修改一下以完成)。而至于判断文件的问题,按照我的理解,我认为根据楼顶的帖子标题和内容是指在这个将环境变量path中的路径一个一个的读出来的程序的基础上的应用问题,而更主要的是上面所提的程序本身,然后再要判断文件就比较简单了。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2006-6-6 23:34
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
bagpipe
银牌会员

DOS联盟捡破烂的


积分 1144
发帖 425
注册 2005-10-20
来自 北京
状态 离线
『第 7 楼』:  

大家答的都没有错,只不过楼主的标题和帖子内容我觉得像是两个问题,一个是来分离%path%环境变量的各个路径,一个是搜索文件,还有,最近论坛里发帖好像存在很多问题
首先--有些人不知道自己的问题应该发到哪个版块
其次--帖子说的特别模糊不清,让人难以理解,无从下手
最后--还有就是很多重复的问题接连在问,估计是对论坛的操作不熟悉造成的

2006-6-7 08:48
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
knightak
初级用户




积分 35
发帖 17
注册 2008-4-3
状态 离线
『第 8 楼』:  

例如在path中找java.exe
使用无奈何的可以找到,
@echo off
for %%i in (java.exe) do if exist %%~$PATH:i set x=%%~$PATH:i
if "%x%" == "" (
        echo 无此文件!
) else (
        echo %x%
        )
pause
用willsort 的找不到东西。
@echo off
if "%1"=="" for %%p in ("%path%") do if exist "%%p\java.exe" %0 "%%p"
set filepath=%1


2008-4-11 17:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: