标题: [已结]如何把环境变量path中的路径逐个读出来?
[打印本页]
作者: wentimao
时间: 2006-6-3 22:09
标题: [已结]如何把环境变量path中的路径逐个读出来?
如量,我要在这此目录里找一个文件,只要有一个路径中能找到需要的文件,就停止找
[
Last edited by willsort on 2006-6-14 at 17:36 ]
作者: Wengier
时间: 2006-6-3 23:48
可以试试下面这个批处理程序:
@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两个工具。
作者: fastslz
时间: 2006-6-4 00:10
厉害啊!我都看不懂lmod,expr用法和执行后的效果?收藏下学习学习....
作者: 无奈何
时间: 2006-6-4 01:48
如果是 cmd 命令行下,可以试试下面的代码。
@echo off
for %%i in (test.txt) do if exist %%~$PATH:i set x=%%~$PATH:i
if "%x%" == "" (
echo 无此文件!
) else (
echo %x%
)
作者: willsort
时间: 2006-6-6 23:15
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 似属冗余?
作者: Wengier
时间: 2006-6-6 23:34
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中的路径一个一个的读出来的程序的基础上的应用问题,而更主要的是上面所提的程序本身,然后再要判断文件就比较简单了。
作者: bagpipe
时间: 2006-6-7 08:48
大家答的都没有错,只不过楼主的标题和帖子内容我觉得像是两个问题,一个是来分离%path%环境变量的各个路径,一个是搜索文件,还有,最近论坛里发帖好像存在很多问题
首先--有些人不知道自己的问题应该发到哪个版块
其次--帖子说的特别模糊不清,让人难以理解,无从下手
最后--还有就是很多重复的问题接连在问,估计是对论坛的操作不熟悉造成的
作者: knightak
时间: 2008-4-11 17:37
例如在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