2013-05-22 47 views
0

我有幾個文件有tif格式,我想將它們翻譯成ENVI格式。 我成功了一個文件,但我想爲目錄中的其餘文件執行操作。如何使用gdal和cmd循環幾個文件?

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 ..... 

我在Windows上工作,所以我只需啓動cmd,然後寫命令:

C:\Users>gdal_translate -of "ENVI" D:\Ser_W55_20100101_A.tif D:\Ser_W55_20100101_A.img 

這個完美工作。任何想法,請在如何做到這一點的所有文件,並返回相同的名稱(從(TIF改變)到ENVI)

回答

3

可以彌補這方面的批處理文件,這樣做:

@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! 

) 

這隻能在當前目錄下運行,如果要包含子文件夾,請將/S標誌添加到dir語句中。我可能會首先檢查發生了什麼,爲此可以在gdal cmd前加上ECHO,所以ECHO gdal_translate...,並在最後加上PAUSE。這樣它只會將命令打印到控制檯而不是實際運行它們。

+1

沒有'DIR'是一個列出文件夾內容的命令,要在當前工作目錄以外的文件夾中執行它使用:'FOR/F %% i IN('DIR/BD:\ Ser \ * .tif')DO(' –

+0

這是因爲'DIR/B'命令只返回文件名(沒有文件夾)。您可以在'DIR'語句中添加'/ S'標誌,這將使其包含所有子文件夾也可以將你的路徑添加到gdal cmd中,看到我的更新回答,我希望能爲你澄清它 –

+1

不,%'mypath%'是一個包含路徑的變量,它的集合在第三行。你想改變它,在那裏做。 –

相關問題