中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何查询出软件SQLServer2000的安装路径?
« [1] [2] »
作者:
标题: 如何查询出软件SQLServer2000的安装路径? 上一主题 | 下一主题
augvii
初级用户





积分 38
发帖 17
注册 2008-4-10
状态 离线
『楼 主』:  如何查询出软件SQLServer2000的安装路径?

比如如何查出sqlserver安装的路径?
我用了下面的语句但是除了路径,还有其它信息,请问还有什么方法能直接查出路径吗?
-----------------------------------------------------------------------------------------------------------------
FOR /F "delims=" %%i IN ('@reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup" /v
SQLPath') DO @SET mypath=%%i
-----------------------------------------------------------------------------------------------------------------

[ Last edited by augvii on 2008-9-28 at 11:41 ]

2008-9-23 19:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
augvii
初级用户





积分 38
发帖 17
注册 2008-4-10
状态 离线
『第 2 楼』:  

难道是我没描述清楚?我想查出安装sqlserver2000的安装路径,再传给一个变量。但是按照上面的方法,得到的是“    SQLPath     REG_SZ  C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL     “。我想得到C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL,批处理该如何写?(注意:后面是没带空格的)

2008-9-23 20:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  


@echo off
for /f "skip=4 tokens=1,2 delims=:" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup" /v "SQLPath"') do (
  set SQLL=%%a
  set SQLR=%%b
)
set SQL=%SQLL:~-1%:%SQLR%
echo %SQL%




2008-9-23 20:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
augvii
初级用户





积分 38
发帖 17
注册 2008-4-10
状态 离线
『第 4 楼』:  

谢谢,HAT.
CN-DOS上的人果然很热心。查了一下午都没结果,没想到在这10分钟就搞定了。

2008-9-23 20:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 5 楼』:  

你查下本地变量path中应有安装路径



49206C6F766520796F752067757973 54656C3A3133383238343036373837
2008-9-24 03:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
augvii
初级用户





积分 38
发帖 17
注册 2008-4-10
状态 离线
『第 6 楼』:  

To everest79:path里取的值好像不是安装路径。我是想取sqlserver数据库文件的存放目录

2008-9-24 09:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
augvii
初级用户





积分 38
发帖 17
注册 2008-4-10
状态 离线
『第 7 楼』:  

to HAT:那段代码有点奇怪,一台机器上都取得了,但在另一台机器上,就取不全了。难道reg真的会漏字符?可是不是中文路径啊?
还想问一下,%%b,是在什么时候取值的?

[ Last edited by augvii on 2008-9-24 at 09:39 AM ]

2008-9-24 09:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 8 楼』:  Re 7楼

对于漏字符的机器,系统版本是什么?
你可以到注册表编辑器里面看看是否真的有中文:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\SQLPath

另,昨晚在群里提到的那个调用VBS来读注册表的代码会不会出现同样的问题?



2008-9-24 09:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
augvii
初级用户





积分 38
发帖 17
注册 2008-4-10
状态 离线
『第 9 楼』:  

没有中文
用三楼的代码这台机器出现:
~-1SQLR\Data
--------------------------------------------------------
@echo off
>"%temp%\my.vbs"
echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\my.vbs"
echo WScript.Echo WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup")
for /f "delims=" %%a in ('cscript /nologo "%temp%\my.vbs"') do set SQL=%%a
echo %SQL%
pause
--------------------------------------------------------------------------------------------
这个代码看不到效果啊,一闪而过。

2008-9-24 09:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 10 楼』:  Re 9楼

出问题的机器,版本是什么?
在那台机器上运行这个代码,把结果贴出来看看:
for /f "skip=4 tokens=1,2 delims=:" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup" /v "SQLPath"') do (
  set SQLL=%%a
  set SQLR=%%b
)
set SQL=%SQLL:~-1%:%SQLR%
echo %SQL%
pause
调用VBS的代码,是不是应该这样:
@echo off
>"%temp%\my.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\my.vbs" echo WScript.Echo WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\SQLPath")
for /f "delims=" %%a in ('cscript /nologo "%temp%\my.vbs"') do set SQL=%%a
echo %SQL%
pause




2008-9-24 10:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
augvii
初级用户





积分 38
发帖 17
注册 2008-4-10
状态 离线
『第 11 楼』:  

第一个代码运行结果:
~-1SQLR\Data
--------------------------------------------------------------------------
第二个代码成功取出:
C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL
---------------------------------------------------------------------------
我本想取得sqlserver目录下的Date文件的路径,即存放数据库文件的目录。
现在数据库sqlserver2000安装时数据目录和安装目录分开的。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\SQLPath查出的是安装目录。不知道存放数据库文件的目录应该查看注册表的哪一项?

2008-9-24 10:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
augvii
初级用户





积分 38
发帖 17
注册 2008-4-10
状态 离线
『第 12 楼』:  

sqlserver2000数据库文件存放目录对应注册表查到了
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\SQLDataRoot
现在用VBS可以实现了。谢谢
但我想问下cscript /nologo 是什么意思啊?

2008-9-24 10:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 13 楼』:  

Re 11楼:
把10楼的第一段代码保存为test.bat,双击运行,把完整结果贴出来看看。

Re 12楼:
看看帮助
cscript /?



2008-9-24 11:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
augvii
初级用户





积分 38
发帖 17
注册 2008-4-10
状态 离线
『第 14 楼』:  

C:\Documents and Settings\Administrator\桌面\sqltest-augvii>for /F "skip=4 token
s=1,2 delims=:" %a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLSe
rver\Setup" /v "SQLPath"') do (
set SQLL=%a
set SQLR=%b
)

C:\Documents and Settings\Administrator\桌面\sqltest-augvii>set SQL=~-1SQLR

C:\Documents and Settings\Administrator\桌面\sqltest-augvii>echo ~-1SQLR
~-1SQLR

C:\Documents and Settings\Administrator\桌面\sqltest-augvii>pause
请按任意键继续. . .
我是放在桌面运行的,刚刚复制到d:\也是不行。。。
==================================================
还有个问题:copy xx.txt  %SQL%   有错吗?        (xx.txt为同一目录下的文件,SQL为赋了一个路径的变量)

[ Last edited by augvii on 2008-9-24 at 12:11 PM ]

2008-9-24 12:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 15 楼』:  Re 14楼

开始
运行
cmd
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup" /v "SQLPath"
结果是什么?如果没有结果,请检查这台机器是否安装了SQL Server 2000

路径有空格的时候记得加引号:
copy "xx.txt" "%SQL%"




2008-9-24 13:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: