Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL连接的批处理文件浏览目录_Postgresql_Batch File - Fatal编程技术网

PostgreSQL连接的批处理文件浏览目录

PostgreSQL连接的批处理文件浏览目录,postgresql,batch-file,Postgresql,Batch File,我再次请求您帮助管理一个小批量脚本。 正如在前一篇文章中所宣布的,我已经习惯于在linux上工作,自动化任务对我来说更为明显,但我今天必须在Microsoft环境下工作。 编写批处理文件绝对不是一件容易的事情。 我可以使用这个脚本连接到PostgreSQL数据库,并通过ogr2ogr加载数据。在那之前,没问题。 目前,文件夹的路径在我的代码中是硬写的,但我希望能够通过windows资源管理器选择工作目录。 此外,关于这个目录,我想有可能处理的子文件夹在同一时间 在这里,在我的*.bat代码下面:

我再次请求您帮助管理一个小批量脚本。 正如在前一篇文章中所宣布的,我已经习惯于在linux上工作,自动化任务对我来说更为明显,但我今天必须在Microsoft环境下工作。 编写批处理文件绝对不是一件容易的事情。 我可以使用这个脚本连接到PostgreSQL数据库,并通过ogr2ogr加载数据。在那之前,没问题。 目前,文件夹的路径在我的代码中是硬写的,但我希望能够通过windows资源管理器选择工作目录。 此外,关于这个目录,我想有可能处理的子文件夹在同一时间

在这里,在我的*.bat代码下面:

TITLE Upload Shapefile Files to PostgreSQL
@echo off
cls
color 9
echo ******************************************************************************
echo *                   Upload Shapefile Files to PostgreSQL                     *
echo ******************************************************************************
set /P Host=Please enter your Server Host (default:localhost):
set /P Port=Please enter your PGSQL port (default:5432):
set /p Database=Please enter your PGSQL Database Name (default:postgres):
set /P Schema=Please enter your Edigeo Schema (default:public):
set /P User=Please enter your PGSQL username (default:postgres):
set /P Password=Please enter your PGSQL password (default:postgres):
For /F %%H In ("C:\Users\stephj\Desktop\SHP\*.shp") do ogr2ogr -overwrite -t_srs EPSG:2154 -s_srs EPSG:2154 -f "PostgreSQL" PG:"host=%Host% port=%Port% user=%User% password=%Password% dbname=%Database%" -lco schema=%Schema%
pause

提前感谢您的时间和帮助。

好的,这里有一个方法。这将通过回显文件来演示,您需要修改它以遵循您的命令结构:

注意这是一个批处理/PowerShell混合脚本。它需要以批处理文件扩展名保存,最好是
.cmd

@echo off
set "pshell="(new-object -COM 'Shell.Application').BrowseForFolder(0,'Select Folder',0,0).self.path""

for /f "delims=" %%a in ('powershell %pshell%') do set "workdir=%%a"
for /r "%workdir%" %%i in (*.shp) do echo "%%~i"

好的,这里有一个方法。这将通过回显文件来演示,您需要修改它以遵循您的命令结构:

注意这是一个批处理/PowerShell混合脚本。它需要以批处理文件扩展名保存,最好是
.cmd

@echo off
set "pshell="(new-object -COM 'Shell.Application').BrowseForFolder(0,'Select Folder',0,0).self.path""

for /f "delims=" %%a in ('powershell %pshell%') do set "workdir=%%a"
for /r "%workdir%" %%i in (*.shp) do echo "%%~i"

是的,没错。我希望有一个弹出窗口来浏览和选择文件夹。批处理文件不能这样做。您需要研究其他脚本语言PowerShell、AutoIt或类似的语言。我希望有一个弹出窗口来浏览和选择文件夹。批处理文件不能这样做。您将需要研究其他脚本语言PowerShell、AutoIt或类似的语言。好的,我已经将您提供给我的内容进行了调整,如下所示<代码>设置“pshell=”(新对象-COM'Shell.Application')。浏览文件夹(0,'Select Folder',0,0)。self.path“”for/f“delims=”%%a in('powershell%pshell%”)do为(*.shp)do echo C:\Program Files\QGIS 3.4\bin\ogr2ogr.exe-append-t\u srs EPSG:2154-s\srs EPSG:2154-f“PostgreSQL”PG:“主机=%host%port=%port%user=%user%password=%password%dbname=%Database%”“%%~i”-lco架构=%schema%pause我收到了答案,但没有执行。您需要删除for循环中的echo:)还请在该行中双引号引用您的路径。因此,从
do
,应该是
do”C:\Program Files\QGIS 3.4\bin\ogr2ogr.exe“-append-t_srs EPSG:2154-s_srs EPSG:2154-f“PostgreSQL”PG:“主机=%host%port=%port%user=%user%password=%password%dbname=%Database%”“%%~i”-lco schema=%schema%
很有魅力!谢谢@Gerhard BarnardOk,我已经用适合我的东西改编了你给我的东西如下。
set“pshell=“(新对象-COM'Shell.Application”).BrowseForFolder(0,'Select Folder',0,0).self.path”“for/f”delims=“%%a in('powershell%pshell%”)do在(*.shp)do echo C:\Program Files\QGIS 3.4\bin\ogr2ogr.exe-append-t_srs EPSG:2154-ssrsepsg:2154-f”PostgreSQL“PG:”主机=%host%port=%port%user=%user%password=%password%dbname=%Database%“”%%i“-lco架构=%schema%pause
我收到了答案,但没有执行。您需要删除for循环中的echo:)还请在该行中双引号引用您的路径。因此,从
do
,应该是
do“C:\Program Files\QGIS 3.4\bin\ogr2ogr.exe“-append-t_srs EPSG:2154-s_srs EPSG:2154-f“PostgreSQL”PG:“主机=%host%port=%port%user=%user%password=%password%dbname=%Database%”“%%~i”-lco架构=%schema%
非常有趣!谢谢@Gerhard Barnard