2016-02-16 3 views
1

Я пытаюсь выполнить последовательность команд в пакетном файле. Мне нужно выполнить процесс в пакетных файлах .tiff, затем переместить выходные файлы .tiff в другое место и выполнить другой процесс в исходных файлах .tiff. Код, который я пытаюсь сделать ниже;Я пытаюсь выполнить несколько команд в пакетном файле. Мне нужно выполнить процесс в пакетных файлах .tiff.

for %f in (*.tiff) do gdaldem_slope_batch.bat %~nf & move /-y "C:\Users\wmiller\Desktop\temp\*slope*.tiff" "C:\Users\wmiller\Desktop\trial" & for %f in (*.tiff) do gdaldem_hillshade_batch.bat %~nf & move /-y "C:\Users\wmiller\Desktop\temp\*hillshade*.tiff" "C:\Users\wmiller\Desktop\trial" 

Моя проблема заключается в том, что он делает первую команду на первый файл и перемещает его в новое место тогда проходит через вторую команду на всех файлов, в свою очередь, и перемещает их на новое место. Затем он выполняет первую команду во втором файле и затем пытается выполнить вторую команду во всех файлах, пытающихся создать дубликаты уже существующих файлов.

Любой совет, это моя первая попытка программирования (если вы не можете сказать), будьте осторожны.

Благодаря

+0

Если вы используете другой пакетный файл из пакетного файла, который нужно используйте команду CALL для запуска вторичного командного файла. Синтаксис вашего кода говорит, что вы используете это из командной строки, а не из пакетного файла. – Squashman

+0

Пакет не знает, как вы хотите, чтобы ваши команды группировались. Вы выполняете: '(loop1: команда A & команда B & (loop2: команда C & команда D))', но вы, вероятно, хотите '(loop1: команда A & команда B) & (loop2: команда C & команда D)' , Вы можете использовать скобки для своего кода. Вы пишете, вы делаете это в batchfile, но squashman прав: вы используете синтаксис для командной строки. Кстати: не пытайтесь писать «однострочники», если это не совсем необходимо, особенно если вы новичок. – Stephan

ответ

0

Мне нужно выполнить процесс на партии .tiff файлов затем переместить выходной .TIFF файлы в другое место и выполнить другой процесс на оригинальном .tiff файлы.

Вот как вы хотите сгруппировать команды затем (также изменен синтаксис файла %% пакетном):

for %%f in (*.tiff) do ( 
    call gdaldem_slope_batch.bat %%~nf 
    move /-y "C:\Users\wmiller\Desktop\temp\*slope*.tiff" "C:\Users\wmiller\Desktop\trial" 
) 
for %%f in (*.tiff) do (
    call gdaldem_hillshade_batch.bat %%~nf 
    move /-y "C:\Users\wmiller\Desktop\temp\*hillshade*.tiff" "C:\Users\wmiller\Desktop\trial" 
) 

Если вы действительно хотите это на одной линии, как и в вопросе, хотя обычно не рекомендуется, что может быть сделан путем группирования всей первой for команды следующим образом:

(for %%f in (*.tiff) do call gdaldem_slope_batch.bat %%~nf & move /-y "C:\Users\wmiller\Desktop\temp\*slope*.tiff" "C:\Users\wmiller\Desktop\trial") & for %%f in (*.tiff) do call gdaldem_hillshade_batch.bat %%~nf & move /-y "C:\Users\wmiller\Desktop\temp\*hillshade*.tiff" "C:\Users\wmiller\Desktop\trial" 
+0

Спасибо всем за ваши ответы, вы сделали мою жизнь намного проще. – wmiller

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