Probleme bei der Verwendung einer Batchdatei Für die Schleife, um TIFI-Dateien in einen GIS-Prozess einzugeben (gdal_polygonize)

1090
Vergentorix

Vielen Dank im Voraus für Ihre Hilfe.

Ich habe gelesen, experimentiert und meinen Kopf seit ein paar Tagen gegen die Wand geschlagen, und könnte wirklich etwas Hilfe gebrauchen. Dies ist mein erster Batchdatei-Versuch.

Ich versuche, TIF-Dateien in einem Ordner zu durchlaufen und einen GDAL-Prozess auf ihnen auszuführen. Ich habe die .bat-Datei über die Befehlszeile im OsGeo4W- Terminal aufgerufen .

Ich kann den Prozess gdal_polygonize erfolgreich für einzelne Dateien ausführen, es ist mir jedoch nicht gelungen, ihn iterativ auszuführen.

SETLOCAL EnableDelayedExpansion  SET MYPATH = C:\Users\mkcarte2\Desktop\Polygonize\  FOR /F %%i IN ('DIR /B %MYPATH%*.tif') DO (  SET MYPATHFILE=%%~nI ::Trying to parse only the filename, so that I don't stack extensions in the output file SET infile=%%i SET outfile=%MYPATHFILE%.shp!  gdal_polygonize %MYPATH%!infile! -F "ESRI Shapefile" %MYPATH%!outfile! ) 

Meine Fehlermeldungen:

Für die erste Datei:

Warnung 1: Layer-Name 'ESRI Shapefile' wurde für 'XML-Gültigkeit' auf> 'ESRIShapefile' eingestellt. Warnung 1: Feldname '% ~ nI.shp' wurde an '_nI.shp' angepasst, um ein gültiger XML-Elementname zu sein. 0 ... 10 ... 20 ... 30 ... 40 ... 50 ... 60 ... 70 ... 80 ... 90 ... 100 - fertig. Für nachfolgende Dateien:

Nachfolgende Dateien:

FEHLER 4: `! Infile! ' ist im Dateisystem nicht vorhanden und wird nicht als unterstützter Datensatzname erkannt. Öffnen nicht möglich!

1
Was ist mit den Ausrufezeichen? Variablen wie "infile" sollten als "% infile%" bezeichnet werden, nicht "! Infile!"? Vielleicht `!% Infile%!`, Wenn Sie die Ausrufezeichen benötigen. Vielleicht versuchen Sie auch "%% ni" anstelle von "%% nI". Ƭᴇcʜιᴇ007 vor 10 Jahren 0
Nach meinem Verständnis sind die Ausrufezeichen für eine verzögerte Erweiterung notwendig. Aber ich bin sehr neu in diesem Bereich, daher könnte ich mich sehr wohl irren. Vergentorix vor 10 Jahren 0

1 Antwort auf die Frage

2
dbenham

Sie haben ein paar Probleme.

  • Ihre Definition von MYPATH ist falsch. Leerzeichen sind bei SET-Zuweisungen von Bedeutung. Sie haben einen Variablennamen mit einem Leerzeichen am Ende und einem Wert mit einem Leerzeichen im Vordergrund erstellt.

  • FOR-Variablennamen unterscheiden zwischen Groß- und Kleinschreibung %%iund %%Isind nicht dasselbe

  • SET outfile=%MYPATHFILE%.shp! müsste zu ändern SET outfile=!MYPATHFILE!.shp

Ihr Skript kann jedoch enorm vereinfacht werden:

for %%F in ("C:\Users\mkcarte2\Desktop\Polygonize\*.tif") do ( gdal_polygonize "%%F" "ESRI Shapefile" "%%~dpnF.shp" ) 

Oder Sie können einen einfachen Einzeiler von der Befehlszeile aus ohne Skript ausführen:

for %F in ("C:\Users\mkcarte2\Desktop\Polygonize\*.tif") do gdal_polygonize "%F" "ESRI Shapefile" "%~dpnF.shp"