标题: [注册表类] 求个读取注册表的批处理 [打印本页]
作者: 我来了 时间: 2013-7-23 16:46 标题: 求个读取注册表的批处理
求个读取注册表的批处理
想做个批处理,可以运行当前电脑的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,也就是说无论安装了几个版本,只启动最低版本的那个
后一个应该不难,前一个完全没有头绪,因为读出来是带空格的,对于批处理的变量处理理解不深,头疼
作者: xxpinqz 时间: 2013-7-23 17:18
本帖最后由 xxpinqz 于 2013-7-23 17:19 编辑
- @echo off
- set "str1=HKLM\SOFTWARE\Microsoft\Office"
- set "str2=\Word\InstallRoot"
- for /f "delims=" %%a in ('reg query "%str1%"^|findstr "1[1-4]\.0$"')do (
- if not defined dst (
- for /f "tokens=2*" %%b in ('reg query "%%a%str2%" /v path 2^>nul')do (
- set "dst=%%c"
- )
- )
- )
- echo,%dst%
- pause
复制代码
作者: CrLf 时间: 2013-7-23 18:03
本帖最后由 CrLf 于 2013-7-23 18:04 编辑
我更喜欢根据相关后缀名的关联路径来获取各种软件安装路径,举个栗子:- @echo off
- for /f "tokens=2 delims==" %%a in ('assoc .doc') do (
- for /f "tokens=1* delims==" %%b in ('ftype %%a') do (
- for %%z in (%%c) do set word=%%z&goto next
- )
- )
- :next
- echo;word 路径为:%word%
- pause&exit
复制代码
作者: PowerShell 时间: 2013-7-23 19:36
本帖最后由 PowerShell 于 2013-7-23 19:40 编辑
先定义一个函数,叫【做我也来了呵呵】,然后运行之即可。
powershell code:- function 我也来了呵呵
- {
-
- $word路径 = ( Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Office\11.0\Word\InstallRoot -Name path).path + "\winword.exe"
- if (test-path $word路径)
- {
- Start-Process $word路径
- break
- }
-
- $word路径 = ( Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Office\12.0\Word\InstallRoot -Name path).path + "\winword.exe"
- if (test-path $word路径)
- {
- Start-Process $word路径
- break
- }
-
- $word路径 = ( Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Office\13.0\Word\InstallRoot -Name path).path + "\winword.exe"
- if (test-path $word路径)
- {
- Start-Process $word路径
- break
- }
-
- $word路径 = ( Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Office\14.0\Word\InstallRoot -Name path).path + "\winword.exe"
- if (test-path $word路径)
- {
- Start-Process $word路径
-
- }
-
-
-
- }
-
- 我也来了呵呵
复制代码
$word路径
C:\Program Files\Microsoft Office\Office14\\winword.exe
能用,最后一段代码运行正常通过。能启动我机子上的word
作者: DAIC 时间: 2013-7-23 20:39
回复 4# PowerShell
教主,PowerShell不是应该比BAT简单很多吗,点解你的代码比人家的长几倍?这让我们信徒好生失望的,有木有?!
作者: 我来了 时间: 2013-7-23 22:06
谢谢 哥哥们,给力,帮别人问的。
感谢你们。
那么多论坛也就觉得编程的,批处理的,wuyou,pediy这类的能学到些真东西。
作者: PowerShell 时间: 2013-7-25 19:46
回复 5# DAIC
呵呵,我powershell宗,又分语法研究分舵,和库钻研分舵,这个我已经说过很多次了。
python致力于提供最简单,容易理解的代码,我也是这样想的。所以,我算是powershell宗,语法分舵,【语法简单明了旗】的一员。
我旗之代码,讲求语法用标准命令,尽量不用简写,一般有很多中文变量,中文注释,代码极易菜鸟理解,极易他人修改,即使n年后,也很容易查找修改,每行代码实现一个小功能。
powershell是新出的语言,功能完备,写起脚本来,本身就比老的脚本语言要直观些的。
而且我认为一个10行的脚本,和同功能的200行的脚本,电脑执行起来,速度不会有太大差别。总之,我们【语法简单明了旗】致力于迁就人,迁就菜鸟。
但是我宗,语法分舵,【宁可语法奇葩,也要语句长度最短旗】就是相反的了。
这些长老搞的语句极短,大都在一行之内,能简写的命令绝不全写,管你看得懂看不懂呢?
代表的有perl语言。
呵呵,大多数脚本语言的,语法分舵,大都有这样的分化。
最后,我想问你的是,我这代码虽长,却容易理解对么? 你能理解么?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |