|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|