2013-05-22 1 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 ..... 

Я работаю над окнами, так что я просто запустить 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. Возможно, мне будет хорошо проверить, что происходит сначала, для этого вы можете добавить ECHO перед gdal cmd, так что ECHO gdal_translate... и добавить PAUSE в конец. Таким образом, он будет выводить команды только на консоль, а не фактически запускать их.

+1

Нет 'DIR' - это команда, в которой перечислены содержимое папки, для ее выполнения в папке, отличной от текущей рабочей директории:' FOR/F %% i IN ('DIR/BD: \ Ser \ * .tif ') DO (' –

+0

Thats, потому что команда' DIR/B' возвращает только имя файла (без папки). Вы можете добавить флаг '/ S' в оператор' DIR', который сделает его включающим все подпапки а также добавьте свой путь к gdal cmd. См. мой ответ на обновление, я надеюсь, что это разъяснит его. –

+1

Нет, '% mypath%' - это переменная, содержащая путь, ее набор на третьей строке. вы хотите изменить его, сделайте это там. –

 Смежные вопросы

  • Нет связанных вопросов^_^