Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];

Вниз

Помогите с batаникой   Найти похожие ветки 

 
31512 ©   (2009-04-22 12:49) [0]

Есть некоторая программа ru.exe. Она консольная и сразу после запуска ожидает ввода. Например

D:\Projects>ru.exe
1 2 1.3 0

После чего выводит результат вычислений в консоль.
Если хочется сохранить результат в файл, то пишу:

D:\Projects>ru.exe > results.txt
1 2 1.3 0

Всё работет хорошо. Далее возникает необходимость запустить программу 300 раз с разными значениями ввода. Проштудировав справку и интернет научился считывать из файла значения ввода:

D:\Projects>ru.exe < params.txt > results.txt

где, в params.txt имеется 300 нужных значений:
1 2 1.3 0
1.01 2 1.3 0
1.02 2 1.3 0
1.03 2 1.3 0
и так далее.
Но считывается только первая строчка. Тогда я переписываю скрипт с циклом для обработки params.txt

@echo off
for /f "delims=" %%i in (params.txt) do (

ru.exe < %%i > result.txt

)

При этом ничего не работает, результат такой:

D:\Projects>for /F "delims=" %i in (params.txt) do (ru.exe  0<%i 1>result.txt )
D:\Projects>(ru.exe  0<1 2 1.3 0 1>result.txt )
Не удается найти указанный файл.

Откуда-то взялись первый 0 и последняя 1. Понятно, что файла с именем (ru.exe  0<1 2 1.3 0 1>result.txt ) не может быть.
Однако следуюший код работает как и ожидается:

@echo off
for /f "delims=" %%i in (params.txt) do (
echo %%i
)

т.е. выводит в столбик значения, записанные в params.txt:
1 2 1.3 0
1.01 2 1.3 0
1.02 2 1.3 0
1.03 2 1.3 0
и так далее.

Вопросы:
1. Как осуществить подстановку значения %%i правильно?
2. Откуда взялись первый 0 и последняя 1?
3. Почему вдруг тело цикла стало именем файла?


 
31512 ©   (2009-04-22 13:20) [1]

Если переписать скрипта так:

@echo off
for /f "delims=" %%i in ("params.txt") do (

echo %%i

)

то вызывает блокнот с содержимым params.txt...


 
antonn ©   (2009-04-22 13:58) [2]

@Echo Off
For /F "delims=" %%a In (params.txt) Do Call :GetLineParam %%a
GoTo :EOF

:GetLineParam

Echo %1 %2 %3 %4

GoTo :EOF

выполнение программ (комманд, отличных от echo) в цикле несколько не реализовано, по моему, сам мучался :)


 
Styx_   (2009-04-22 13:59) [3]

Наверное, так:
echo %%i | ru.exe 1>result.txt


 
31512 ©   (2009-04-22 15:25) [4]


> antonn ©   (22.04.09 13:58) [2]

Спасибо, но результат ровно такой же как

@echo off
for /f "delims=" %%i in (params.txt) do (
echo %%i
)


Мне нужно задать ввод программе ru.exe. Вот в

D:\Projects>ru.exe < params.txt > results.txt

у консоли это получается, но только для первой строки из params.txt, а мне нужно для каждой. Потому и циклом пытаюсь. Твоим способом можно преобразовать к вводу параметрами коммандной строки.


 
31512 ©   (2009-04-22 15:30) [5]


> Styx_   (22.04.09 13:59) [3]

Можешь дать некоторые пояснения?
Зачем там 1?


 
Styx_   (2009-04-22 15:55) [6]


> Зачем там 1?

Да в принципе низачем - без неё будет то же самое, так как первый stream (stdout) подразумевается по умолчанию для вывода, как и stdin для ввода :) Но можно написать 2>errors.txt, и тогда в errors.txt будет перенаправлен stderr


 
31512 ©   (2009-04-22 16:04) [7]


> Styx_   (22.04.09 15:55) [6]

Понятно. Впринципе она их сама добавляет.
Непонятно почему оно работает... Похоже нужно с приоритетами разбираться...


 
Styx_   (2009-04-22 16:13) [8]

А что непонятно-то и причём приоритеты? echo выводит свой аргумент в STDOUT, мы его через PIPE (|) отправляем Вашей программе в STDIN. А Вы исходно пытались то, что нужно передать в STDIN, подсунуть ей прямо в командной строке.


 
antonn ©   (2009-04-22 16:16) [9]

не понял, вот так не работает?
@Echo Off
For /F "delims=" %%a In (params.txt) Do Call :GetLineParam %%a
GoTo :EOF

:GetLineParam

"D:\Projects>ru.exe %1 %2 %3 %4" >>1.txt

GoTo :EOF


 
Styx_   (2009-04-22 16:19) [10]

2antonn
У него программа ожидает ввод из STDIN, а не параметры в коммандной строке.


 
31512 ©   (2009-04-22 16:28) [11]


> Styx_   (22.04.09 16:19) [10]

Ага. Спасибо. Разобрался. Теперь впереди работа с results.txt



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
2-1241724625
<X>
2009-05-07 23:30
2009.06.28
Работа с меню


15-1240518603
Юрий
2009-04-24 00:30
2009.06.28
С днем рождения ! 24 апреля 2009 пятница


15-1240248508
Маэстро
2009-04-20 21:28
2009.06.28
Никто не сталкивался с такой проблемой в WebMoney Keeper?


15-1240225644
T&amp;F
2009-04-20 15:07
2009.06.28
Отслеживание входящих подключений


2-1241773963
товарищ вася
2009-05-08 13:12
2009.06.28
Как скрыть попап меню





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский