如何使用 gdal 和 cmd 循环访问多个文件?

sac*_*cvf 2 gdal

我有几个具有 tif 格式的文件。我想将它们转换为 ENVI 格式。我对一个文件成功了,但我想对目录中的其余文件执行此操作。

   the first file in the directory is:Ser_W55_20100101_A.tif.
   the second file in the directory is:Ser_W55_20100102_A.tif    and so on .....
Run Code Online (Sandbox Code Playgroud)

我在 Windows 上工作,所以我只需启动 cmd,然后编写命令:

 C:\Users>gdal_translate -of "ENVI" D:\Ser_W55_20100101_A.tif D:\Ser_W55_20100101_A.img
Run Code Online (Sandbox Code Playgroud)

这很有效。关于如何对所有文件执行此操作并返回相同名称(从 (tif) 更改为 ENVI)的任何想法

Rut*_*ies 5

您可以为此创建一个批处理文件,执行以下操作:

@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET mypath=D:\test\

FOR /F %%i IN ('DIR /B %mypath%*.tif') DO (

    SET infile=%%i
    SET outfile=!infile:.tif=.img!

    gdal_translate -of "ENVI" %mypath%!infile! %mypath%!outfile!

)
Run Code Online (Sandbox Code Playgroud)

这只在当前目录中运行,如果您想包含子文件夹,请将该/S标志添加到 dir 语句中。我可能会先检查一下发生了什么,为此,您可以ECHO在 gdal cmd 前面添加一个,所以,并在末尾ECHO gdal_translate...添加一个。PAUSE这样它只会将命令打印到控制台,而不是实际运行它们。