Главная страница
    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-1241611459
Mishenka
2009-05-06 16:04
2009.06.28
Фокус при скроллинге в ListViewСкроллинг


3-1222915555
Татьяна
2008-10-02 06:45
2009.06.28
Lookup поля в таблицах.


2-1241637084
Pauk
2009-05-06 23:11
2009.06.28
Как пользоваться LoadString?


15-1239685568
Andy BitOff
2009-04-14 09:06
2009.06.28
А вы подаете нищим?


15-1240318906
ford
2009-04-21 17:01
2009.06.28
просмотр PageMaker





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский