2016-09-09 7 views
0

Мне нужен скрипт для заполнения всех возможных комбинаций из 5 блоков в сетке 3 на 3. Поэтому я решил, что могу использовать ImageMagick для раскраски и txt-файл для ввода. Текстовый файл состоит из одного номера в строке, номер показывает, какой блок должен быть окрашен. 5 чисел образуют одну возможную комбинацию.Пакетный файл Windows для продолжения цикла и строки

Я использую цикл for для чтения строки txt-файла для строки. Переменная (называемая a) увеличивается, и когда она достигает 5, она сбрасывается на 0, а другая переменная (называемая n) увеличивается, что изменяет имя выходного файла. Так как мне нужно перезагрузить исходное изображение каждый раз при запуске новой комбинации, я использую другую переменную (имя) для переключения между исходным изображением и изображением для каждой комбинации.

Это мой первый раз, когда я написал командный файл. Поэтому я, возможно, не совсем понял, как работает продолжение строки и переменные, так как мой скрипт не производит вывод.

setlocal ENABLEDELAYEDEXPANSION 
set a=0 
set n=0 
for /F %%G in (test.txt) do^
set /A a=a+1 &^
if !a!==5 set a=0 & set /A n=n+1 &^
if !a!==0 set name=original.png else set name=output_!n!.png^
if %%G == 1 magick convert -fill blue -draw "color 50, 50 floodfill" %name% output_!n!.png^
if %%G == 2 magick convert -fill blue -draw "color 150, 50 floodfill" %name% output_!n!.png^
if %%G == 3 magick convert -fill blue -draw "color 250, 50 floodfill" %name% output_!n!.png^
if %%G == 4 magick convert -fill blue -draw "color 50, 150 floodfill" %name% output_!n!.png^
if %%G == 5 magick convert -fill blue -draw "color 150, 150 floodfill" %name% output_!n!.png^
if %%G == 6 magick convert -fill blue -draw "color 250, 150 floodfill" %name% output_!n!.png^
if %%G == 7 magick convert -fill blue -draw "color 50, 250 floodfill" %name% output_!n!.png^
if %%G == 8 magick convert -fill blue -draw "color 150, 250 floodfill" %name% output_!n!.png^
if %%G == 9 magick convert -fill blue -draw "color 250, 250 floodfill" %name% output_!n!.png 
Pause 

ответ

2

Вот ваш код переформатирован только (кроме новой первой линии):

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
set a=0 
set n=0 
for /F %%G in (test.txt) do (
    set /A a=a+1 
    if !a!==5 (set a=0) 
    set /A n=n+1 
    if !a!==0 (set name=original.png) else (set name=output_!n!.png) 
    if %%G==1 (magick convert -fill blue -draw "color 50, 50 floodfill" !name! output_!n!.png) 
    if %%G==2 (magick convert -fill blue -draw "color 150, 50 floodfill" !name! output_!n!.png) 
    if %%G==3 (magick convert -fill blue -draw "color 250, 50 floodfill" !name! output_!n!.png) 
    if %%G==4 (magick convert -fill blue -draw "color 50, 150 floodfill" !name! output_!n!.png) 
    if %%G==5 (magick convert -fill blue -draw "color 150, 150 floodfill" !name! output_!n!.png) 
    if %%G==6 (magick convert -fill blue -draw "color 250, 150 floodfill" !name! output_!n!.png) 
    if %%G==7 (magick convert -fill blue -draw "color 50, 250 floodfill" !name! output_!n!.png) 
    if %%G==8 (magick convert -fill blue -draw "color 150, 250 floodfill" !name! output_!n!.png) 
    if %%G==9 (magick convert -fill blue -draw "color 250, 250 floodfill" !name! output_!n!.png) 
) 
Pause 

Я обновил код, чтобы исправить основные проблемы с переменным именем.

+0

Были и другие ошибки (логика), но благодаря вашему удивительному форматированию их было легко! Он работает сейчас. –

+0

исправлена ​​основная проблема – Compo