标题: [文本处理] [已解决]批处理如何获取path环境变量中的某个路径? [打印本页]
作者: douqu 时间: 2012-11-28 19:09 标题: [已解决]批处理如何获取path环境变量中的某个路径?
如标题所言,我现想获取变量中的某个路径,例如本机path路径值为:
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;D:\My Program\SVN\b
in;D:\My Program\VC\Tools\WinNT;D:\My Program\VC\MSDev98\Bin;D:\My Program\VC\To
ols;D:\My Program\VC98\bin
我想获取其中的 "D:\My Program\VC\Tools\" 而去掉其他的路径。
当然用for命令参数delims分号分隔然后再tokens,最后拓展变量可以得到,但是我想在不同的机器上(其他机器可能path变量的排列和本机不一致,所以不能直接用tokens读取指定组)也实现能获取到该路径,请教各位老师如何解决。
作者: tmplinshi 时间: 2012-11-28 20:15
本帖最后由 tmplinshi 于 2012-11-28 23:42 编辑
如果路径下有一个 a.exe:- @echo off
- for %%a in ("a.exe") do echo %%~dp$path:a
- pause
复制代码
作者: douqu 时间: 2012-11-28 20:37
回复 2# tmplinshi
首先感谢版主的回复,可能是我表述不清楚,你的解答并不是我想要的结果。
其实我的意思就是要从path这个命令或者%path%这个环境变量中提取出其中的任意一组指定条件的路径。
我尝试过用findstr命令,但由于其对空格和/的处理我不理解,无法做到.
也想过用for /f 把%path%环境变量按分号为分隔符输出到一个临时文件中,然后find.此条可行.但是在输出文件的时有些许问题.
其主要作用是,比如我我安装某个软件时添加了一个path值,如果卸载的话,就直接读取path这个环境变量的中路径,然后执行卸载。
作者: weichenxiehou 时间: 2012-11-28 21:48
- path|sed -r "s/^.*;?(D:\\My Program\\VC\\Tools\\[^;]*);?.*$/\1/"
复制代码
作者: weichenxiehou 时间: 2012-11-28 21:56
本帖最后由 weichenxiehou 于 2012-11-28 22:01 编辑
用findstr照样可以啊。。- @echo off
- set new="%path:;=" "%"
- (for %%a in (%new%) do (
- echo,%%~a
- ))|findstr /ic:"D:\\My Program\\VC\\Tools\\"
复制代码
作者: tmplinshi 时间: 2012-11-28 23:37
不明白。
如果已经知道了路径是 "D:\My Program\VC\Tools\",为什么还要去获取?
如果不知道具体路径,那么要获取的路径有什么关键字?
作者: apang 时间: 2012-11-28 23:40
直接判断?- if /i "%path:D:\My Program\VC\Tools\=%" neq "%path%" echo D:\My Program\VC\Tools\
复制代码
作者: douqu 时间: 2012-11-29 10:13
回复 4# weichenxiehou
你好,测试环境请用xp或者win7,sed命令可是linux的啊。
作者: douqu 时间: 2012-11-29 10:17
回复 5# weichenxiehou
谢谢,高手!!!
作者: weichenxiehou 时间: 2012-11-29 12:00
回复 8# douqu
sed有移植到windows的版本。
作者: Batcher 时间: 2012-11-29 22:04
回复 8# douqu
这里有windows版的
http://www.bathome.net/thread-16975-1-1.html
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |