[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
另外,我发现wmic的路径结果很难被 if 使用,显示没问题,真难用。

猜测你遇到的问题可能是wmic命令结果的行尾有特殊的不可见字符。
可以把你的代码发出来,我帮你看看如何处理。

TOP

  1. dir 'HKLM:\SOFTWARE\Microsoft\Office\*\Common\InstallRoot' | %{ ($_.Name -Split '\\')[-3];(gp $_.PSPath).'Path' }
复制代码

TOP

  1. @echo off
  2. set "key=HKLM\SOFTWARE\Microsoft\Office"
  3. for /f "delims=" %%i in ('reg query "%key%" ^| findstr "^HKEY_.*\\[0-9][0-9.]*$"') do (
  4.     echo;%%~nxi
  5.     for /f "tokens=1,2*" %%i in ('reg query "%%i\Common\InstallRoot"') do if "%%i" == "Path" echo;%%k
  6. )
  7. pause
复制代码
1

评分人数

TOP

本帖最后由 aries215 于 2017-2-26 17:34 编辑

回复 15# GNU
奇哉怪也,我复制你的代码运行,仍然提示没有可用实例。运行一次Excel也不行。
我测试是在精简版系统,wmic功能完整;Office也是3in1绿化精简版,在无忧找的,但会写入很多注册表键值,包含1楼的项目。

TOP

回复 19# aries215


    也许是因为 Wmic Path Win32_Product 不是查的注册表

TOP

本帖最后由 aries215 于 2017-2-26 18:06 编辑

回复 16# GNU
运行后,一共弹出3个CMD窗口,加了双引号就2个CMD窗口,路径怎么会不正确?谢谢!
  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. for /f "skip=1 delims==" %%a in ('wmic process where name^="notepad.exe" get executablepath') do (
  4. set "_var=%%~a"
  5. echo,!_var!
  6. start "!_var!"
  7. )
  8. pause
复制代码

TOP

回复 21# aries215
  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. for /f "tokens=2 delims==" %%a in ('wmic process where name^="hash.exe" get executablepath /value ^| findstr "="') do (
  4.     set "_var=%%~a"
  5.     start "" "!_var:~0,-1!"
  6.     goto :end
  7. )
  8. :end
  9. pause
复制代码
1

评分人数

TOP

回复 18# WHY
此代码可用,挺高深的。

TOP

本帖最后由 aries215 于 2017-2-26 18:25 编辑

回复 22# GNU
真厉害!
wmic 很多结果都要用 findstr 比较好吗?
我还有很多东西要学习!

TOP

本帖最后由 aries215 于 2017-2-26 19:52 编辑

回复 22# GNU
好吧,问题基本解决,非常感谢楼上各位热心帮助。我继续学习。

TOP

回复 24# aries215


    我习惯给wmic加上/value参数,这样得到的结果都是 key=value 这种格式,方便后续的处理。

TOP

回复 26# GNU
原来如此,谢谢

TOP

返回列表