中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-01 18:02
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何把环境变量path中的路径逐个读出来? 查看 1,516 回复 7
楼 主 [已结]如何把环境变量path中的路径逐个读出来? 发表于 2006-06-03 22:09 ·  中国 辽宁 大连 电信
初级用户
积分 110
发帖 27
注册 2006-06-03 17:25
20年会员
UID 56491
状态 离线
如量,我要在这此目录里找一个文件,只要有一个路径中能找到需要的文件,就停止找

[ Last edited by willsort on 2006-6-14 at 17:36 ]
xp,cmd
2 发表于 2006-06-03 23:48 ·  加拿大 Bell
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
23年会员
UID 9
状态 离线
可以试试下面这个批处理程序:

@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和雨露,谢谢!)

3 发表于 2006-06-04 00:10 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
厉害啊!我都看不懂lmod,expr用法和执行后的效果?收藏下学习学习....
4 发表于 2006-06-04 01:48 ·  中国 辽宁 锦州 中移铁通
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
21年会员
UID 40733
性别 男
状态 离线
如果是 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

5 发表于 2006-06-06 23:15 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
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:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
6 发表于 2006-06-06 23:34 ·  加拿大 Bell
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
23年会员
UID 9
状态 离线
Originally posted by willsort at 2006-6-6 11:15 PM:
Re wentimao:

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


@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和雨露,谢谢!)

7 发表于 2006-06-07 08:48 ·  中国 北京 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144
发帖 425
注册 2005-10-20 00:00
20年会员
UID 43784
来自 北京
状态 离线
大家答的都没有错,只不过楼主的标题和帖子内容我觉得像是两个问题,一个是来分离%path%环境变量的各个路径,一个是搜索文件,还有,最近论坛里发帖好像存在很多问题
首先--有些人不知道自己的问题应该发到哪个版块
其次--帖子说的特别模糊不清,让人难以理解,无从下手
最后--还有就是很多重复的问题接连在问,估计是对论坛的操作不熟悉造成的
8 发表于 2008-04-11 17:37 ·  中国 河南 郑州 联通
初级用户
积分 35
发帖 17
注册 2008-04-03 01:33
18年会员
UID 114814
性别 男
状态 离线
例如在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
论坛跳转: