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

[注册表类] 求个读取注册表的批处理

[复制链接]
发表于 2013-7-23 16:46:15 | 显示全部楼层 |阅读模式
求个读取注册表的批处理




想做个批处理,可以运行当前电脑的office的word
已知office安装目录在注册表的
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Word\InstallRoot
(03版是11.0,其他版本是12、13、14)
弄了很久,没弄好...
碰到2个问题
1、读取后有个空格,因为很多时候都是装c的Program Files,这里有个空格问题。。。
2、需要做个判断,从11.0开始,一直判断到14.0,也就是说无论安装了几个版本,只启动最低版本的那个
后一个应该不难,前一个完全没有头绪,因为读出来是带空格的,对于批处理的变量处理理解不深,头疼
发表于 2013-7-23 17:18:45 | 显示全部楼层
本帖最后由 xxpinqz 于 2013-7-23 17:19 编辑

  1. @echo off
  2. set "str1=HKLM\SOFTWARE\Microsoft\Office"
  3. set "str2=\Word\InstallRoot"
  4. for /f "delims=" %%a in ('reg query "%str1%"^|findstr "1[1-4]\.0$"')do (
  5.    if not defined dst (
  6.       for /f "tokens=2*" %%b in ('reg query "%%a%str2%" /v path 2^>nul')do (
  7.             set "dst=%%c"
  8.       )
  9.    )
  10. )
  11. echo,%dst%
  12. pause
复制代码
发表于 2013-7-23 18:03:45 | 显示全部楼层
本帖最后由 CrLf 于 2013-7-23 18:04 编辑

我更喜欢根据相关后缀名的关联路径来获取各种软件安装路径,举个栗子:
  1. @echo off
  2. for /f "tokens=2 delims==" %%a in ('assoc .doc') do (
  3.   for /f "tokens=1* delims==" %%b in ('ftype %%a') do (
  4.     for %%z in (%%c) do set word=%%z&goto next
  5.   )
  6. )
  7. :next
  8. echo;word 路径为:%word%
  9. pause&exit
复制代码
发表于 2013-7-23 19:36:29 | 显示全部楼层
本帖最后由 PowerShell 于 2013-7-23 19:40 编辑

先定义一个函数,叫【做我也来了呵呵】,然后运行之即可。
powershell code:

  1. function  我也来了呵呵
  2. {

  3. $word路径 = ( Get-ItemProperty  -Path HKLM:\SOFTWARE\Microsoft\Office\11.0\Word\InstallRoot  -Name path).path + "\winword.exe"
  4. if  (test-path $word路径)
  5. {
  6.         Start-Process  $word路径
  7.         break
  8. }

  9. $word路径 = ( Get-ItemProperty  -Path HKLM:\SOFTWARE\Microsoft\Office\12.0\Word\InstallRoot  -Name path).path + "\winword.exe"
  10. if  (test-path $word路径)
  11. {
  12.         Start-Process  $word路径
  13.         break
  14. }

  15. $word路径 = ( Get-ItemProperty  -Path HKLM:\SOFTWARE\Microsoft\Office\13.0\Word\InstallRoot  -Name path).path + "\winword.exe"
  16. if  (test-path $word路径)
  17. {
  18.         Start-Process  $word路径
  19.         break
  20. }

  21. $word路径 = ( Get-ItemProperty  -Path HKLM:\SOFTWARE\Microsoft\Office\14.0\Word\InstallRoot  -Name path).path + "\winword.exe"
  22. if  (test-path $word路径)
  23. {
  24.         Start-Process  $word路径

  25. }



  26. }

  27. 我也来了呵呵
复制代码
$word路径
C:\Program Files\Microsoft Office\Office14\\winword.exe
能用,最后一段代码运行正常通过。能启动我机子上的word
发表于 2013-7-23 20:39:38 | 显示全部楼层
回复 4# PowerShell


    教主,PowerShell不是应该比BAT简单很多吗,点解你的代码比人家的长几倍?这让我们信徒好生失望的,有木有?!
 楼主| 发表于 2013-7-23 22:06:09 | 显示全部楼层
谢谢  哥哥们,给力,帮别人问的。
感谢你们。
那么多论坛也就觉得编程的,批处理的,wuyou,pediy这类的能学到些真东西。
发表于 2013-7-25 19:46:50 | 显示全部楼层
回复 5# DAIC

呵呵,我powershell宗,又分语法研究分舵,和库钻研分舵,这个我已经说过很多次了。

python致力于提供最简单,容易理解的代码,我也是这样想的。所以,我算是powershell宗,语法分舵,【语法简单明了旗】的一员。
我旗之代码,讲求语法用标准命令,尽量不用简写,一般有很多中文变量,中文注释,代码极易菜鸟理解,极易他人修改,即使n年后,也很容易查找修改,每行代码实现一个小功能。
powershell是新出的语言,功能完备,写起脚本来,本身就比老的脚本语言要直观些的。  
而且我认为一个10行的脚本,和同功能的200行的脚本,电脑执行起来,速度不会有太大差别。总之,我们【语法简单明了旗】致力于迁就人,迁就菜鸟。


但是我宗,语法分舵,【宁可语法奇葩,也要语句长度最短旗】就是相反的了。
这些长老搞的语句极短,大都在一行之内,能简写的命令绝不全写,管你看得懂看不懂呢?  
代表的有perl语言。

呵呵,大多数脚本语言的,语法分舵,大都有这样的分化。

最后,我想问你的是,我这代码虽长,却容易理解对么? 你能理解么?

评分

参与人数 1技术 +1 收起 理由
我来了 + 1 da cai ye

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 12:02 , Processed in 0.020522 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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