我有一个用于db备份的.BAT
文件,用于设置sql server和cassandra的路径,如果用户没有在同一路径中安装这些应用程序备份它会失败。
实际上.BAT
文件按如下方式设置路径:
SET "CASSANDRA_DATA_PATH=C:\Program Files\DataStax Community\data\data"
SET "MSSQL_BACK_PATH=C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup"
因此,如果用户具有其他版本的SQL Server,则备份也不会起作用。
而不是那样,.BAT
文件应该在执行脚本之前找到正确的路径和版本。
知道如何做到这一点吗?
答案 0 :(得分:0)
如果Casandra不是某种便携式数据库,安装后它应该在HKEY_LOCAL_MACHINE\SOFTWARE\
下的某个地方存储有关自身的信息。我从未使用过casandra,因此您需要自己找到存储数据的位置。至于MS SQL:
@echo off
for /f "delims=" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions"') do set "ver=%%~nxa"
rem for /f "delims=" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions"') do set "ver=%%~nxa"
echo --%ver%--
rem set "ver=%ver:.=%"
for /f "skip=2 tokens=1,2,* delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\%ver%" /v "ParentInstance"') do set "pi=%%~nxc"
rem echo --%pi%--
for /f "skip=2 tokens=1,2,* delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\%pi%\MSSQLServer" /v "BackupDirectory"') do set dbp=%%~nc
echo %dbp%
这应该回应备份目录,如果它的设置。
答案 1 :(得分:0)
我通过这样做解决了这个问题:
sc \%HOSTIP%启动RemoteRegistry
REG QUERY \\%HOSTIP%\ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ Folders / s / f" DataStax" > search.txt
findstr" ty \ data" search.txt> testcase.txt
sc \ HOSTIP停止RemoteRegistry