找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32627|回复: 10

[文本处理] [已解决]批处理如何获取path环境变量中的某个路径?

[复制链接]
发表于 2012-11-28 19:09:02 | 显示全部楼层 |阅读模式
如标题所言,我现想获取变量中的某个路径,例如本机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读取指定组)也实现能获取到该路径,请教各位老师如何解决。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-11-28 20:15:42 | 显示全部楼层
本帖最后由 tmplinshi 于 2012-11-28 23:42 编辑

如果路径下有一个 a.exe:
  1. @echo off
  2. for %%a in ("a.exe") do echo %%~dp$path:a
  3. pause
复制代码
 楼主| 发表于 2012-11-28 20:37:48 | 显示全部楼层
回复 2# tmplinshi
首先感谢版主的回复,可能是我表述不清楚,你的解答并不是我想要的结果。

其实我的意思就是要从path这个命令或者%path%这个环境变量中提取出其中的任意一组指定条件的路径。


我尝试过用findstr命令,但由于其对空格和/的处理我不理解,无法做到.


也想过用for /f 把%path%环境变量按分号为分隔符输出到一个临时文件中,然后find.此条可行.但是在输出文件的时有些许问题.


其主要作用是,比如我我安装某个软件时添加了一个path值,如果卸载的话,就直接读取path这个环境变量的中路径,然后执行卸载。
发表于 2012-11-28 21:48:12 | 显示全部楼层

  1. path|sed -r "s/^.*;?(D:\\My Program\\VC\\Tools\\[^;]*);?.*$/\1/"
复制代码
发表于 2012-11-28 21:56:39 | 显示全部楼层
本帖最后由 weichenxiehou 于 2012-11-28 22:01 编辑

用findstr照样可以啊。。

  1. @echo off
  2. set new="%path:;=" "%"
  3. (for %%a in (%new%) do (
  4.   echo,%%~a
  5. ))|findstr /ic:"D:\\My Program\\VC\\Tools\"
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2012-11-28 23:37:04 | 显示全部楼层
不明白。

如果已经知道了路径是 "D:\My Program\VC\Tools\",为什么还要去获取?
如果不知道具体路径,那么要获取的路径有什么关键字?
发表于 2012-11-28 23:40:53 | 显示全部楼层
直接判断?
  1. if /i "%path:D:\My Program\VC\Tools\=%" neq "%path%" echo D:\My Program\VC\Tools\
复制代码
 楼主| 发表于 2012-11-29 10:13:37 | 显示全部楼层
回复 4# weichenxiehou


   你好,测试环境请用xp或者win7,sed命令可是linux的啊。
 楼主| 发表于 2012-11-29 10:17:16 | 显示全部楼层
回复 5# weichenxiehou


   谢谢,高手!!!
发表于 2012-11-29 12:00:45 | 显示全部楼层
回复 8# douqu
    sed有移植到windows的版本。
发表于 2012-11-29 22:04:04 | 显示全部楼层
回复 8# douqu


这里有windows版的
http://www.bathome.net/thread-16975-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 21:37 , Processed in 0.022811 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表