我需要一个批处理脚本来从 Windows 中的 .bat 文件创建 ODBC/DSN 连接。我该怎么做?
答案1
当然。
使用管理工具中的“数据源 (ODBC)”小程序在您的电脑上手动创建 ODBC 连接。
启动 regedit 并转到 HKLM\Software\ODBC,然后将所有内容从 ODBC 导出到 .reg 文件。这是文件夹上的右键单击选项。
现在在记事本中打开导出的文件,您需要删除所有不涉及特定 ODBC 连接的内容。
你最终应该会得到一个类似这样的注册表文件
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources]
"TEST"="SQL Server"
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\TEST]
"Driver"="C:\\Windows\\system32\\SQLSRV32.dll"
"Server"="SERVERNAME"
"LastUser"="USERNAME"
"Trusted_Connection"="Yes"
根据连接设置等,它可能略有不同。您将需要两个部分,数据源定义连接的类型,在本例中为 SQL 服务器,然后是告诉您它叫什么、使用哪个驱动程序以及使用哪种身份验证的位。这一切都将在您设置连接时完成,您只需要包含它的 .reg 文件。
然后,您可以通过双击 reg 文件将其导入到任何 PC 上,或者如果您有工具,也可以运行脚本使用 regedit 将其导入。您可以从批处理文件中调用此导入:
regedit /s FileToImport.reg
答案2
@Echo Off
cd %systemroot%\system32
call :IsAdmin
SET /P psqlname=PostgreSQL Link datasource ismini Giriniz :
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" /v "%psqlname%" /t REG_SZ /d "PostgreSQL Unicode(x64)" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Driver" /t REG_SZ /d "C:\\Program Files\\psqlODBC\\1301\\bin\\psqlodbc35w.dll" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "CommLog" /t REG_SZ /d "0" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Debug" /t REG_SZ /d "0" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Fetch" /t REG_SZ /d "100" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "UniqueIndex" /t REG_SZ /d "1" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "UseDeclareFetch" /t REG_SZ /d "0" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "UnknownSizes" /t REG_SZ /d "0" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "TextAsLongVarchar" /t REG_SZ /d "1" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "UnknownsAsLongVarchar" /t REG_SZ /d "0" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "BoolsAsChar" /t REG_SZ /d "1" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Parse" /t REG_SZ /d "0" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "MaxVarcharSize" /t REG_SZ /d "255" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "MaxLongVarcharSize" /t REG_SZ /d "8190" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "ExtraSysTablePrefixes" /t REG_SZ /d "" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Description" /t REG_SZ /d "" /f
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "UID" /t REG_SZ /d "postgres" /f
SET /P dbname=Baglanmak istediginiz Postgresql Database name Giriniz :
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Database" /t REG_SZ /d "%dbname%" /f
SET /P Username=Baglanmak istediginiz Database Kullanici ismini giriniz :
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Username" /t REG_SZ /d "%Username%" /f
SET /P Password=Baglanmak istediginiz Database Kullanici password bilgisini giriniz :
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Password" /t REG_SZ /d "%Password%" /f
SET /P Servername=Baglanmak istediginiz Database Servername adresini giriniz :
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Servername" /t REG_SZ /d "%Servername%" /f
SET /P Port=Portu numarasini giriniz :
reg.exe add "HKLM\SOFTWARE\ODBC\ODBC.INI\%psqlname%" /v "Port" /t REG_SZ /d "%Port%" /f
echo lutfen odbc baglantilarini test edin
Pause & Exit
答案3
我们可以对 Gerald Schneider 之前的剧本做一些修改:
@echo Off
cd %systemroot%\system32
set psqlname=Dsn_name
set dbname=database
set Username=Username
set Password=password
set Servername=servername
set Port=5432
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\"
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources" /v "%psqlname%" /t REG_SZ /d "PostgreSQL Unicode(x64)" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Driver" /t REG_SZ /d "C:\Program Files\psqlODBC\0905\bin\psqlodbc35w.dll" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "CommLog" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Debug" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Fetch" /t REG_SZ /d "100" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "UniqueIndex" /t REG_SZ /d "1" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "UseDeclareFetch" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "UnknownSizes" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "TextAsLongVarchar" /t REG_SZ /d "1" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "UnknownsAsLongVarchar" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "BoolsAsChar" /t REG_SZ /d "1" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Parse" /t REG_SZ /d "0" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "MaxVarcharSize" /t REG_SZ /d "255" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "MaxLongVarcharSize" /t REG_SZ /d "8190" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "ExtraSysTablePrefixes" /t REG_SZ /d /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Description" /t REG_SZ /d /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "UID" /t REG_SZ /d "postgres" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Database" /t REG_SZ /d "%dbname%" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Username" /t REG_SZ /d "%Username%" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Password" /t REG_SZ /d "%Password%" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Servername" /t REG_SZ /d "%Servername%" /f
reg.exe add "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\\%psqlname%\\\\" /v "Port" /t REG_SZ /d "%Port%" /f
exit 0