Запустить exe (с ответами на продвигаемые вопросы) в пакетном режиме

Может ли кто-нибудь помочь мне с кодированием пакетного файла, который я хочу?

У меня есть один exe-файл. Как только я дважды щелкну по нему, появится черное окно DOS и спросит меня: «Какое имя имеет текстовый файл». Мне нужно ввести полное имя с расширением. После нажатия Enter в том же черном окне DOS последовал еще один вопрос, что-то вроде "сколько столбцов в вашем файле? 1. 10 столбцов; 2. 100 столбцов: 3. 150 столбцов. После этого exe-файл спросит еще несколько подобные вопросы.

Я хочу, чтобы exe обрабатывал несколько входных текстовых файлов, различаются только имена и данные входных файлов, но на самом деле количество столбцов, количество строк и т. Д. Все одинаковы.

Поэтому я подумал, что, возможно, пакетный файл может запускать этот exe (с ответами на продвигаемые вопросы) в пакетном режиме.

Код в bat-файле может выглядеть так:

@echo off
:: Let the exe run and process file1
start C:\Batexe\myprogram.exe
:: Could anyone help with the code to answer following up questions automatically (no need to even display the questions)?
:: Could anyone help with the code to answer following up questions automatically (no need to even display the questions)?
:: Could anyone help with the code to answer following up questions automatically (no need to even display the questions)?
:: Could anyone help with the code to answer following up questions automatically (no need to even display the questions)?

:: Let the exe run and process file2
:: Could anyone help with the code to answer following up questions automatically (no need to even display the questions)?
:: Could anyone help with the code to answer following up questions automatically (no need to even display the questions)?
:: Could anyone help with the code to answer following up questions automatically (no need to even display the questions)?
:: Could anyone help with the code to answer following up questions automatically (no need to even display the questions)?

:: Let the exe run and process file3
.
.
.

У меня может быть 100 файлов ввода текста. Приведенные выше блоки кода я могу повторять 100 раз (чувствую себя глупо). Надеюсь, я ясно выразился. Так кто-нибудь может мне помочь? Заранее спасибо!!! Я разместил те же вопросы в другом месте и еще не получил ответа.


person user1992819    schedule 19.01.2013    source источник


Ответы (1)


Пока ваша исполняемая программа получает ввод со стандартного ввода, вы можете передавать ответы программе. Нет необходимости использовать СТАРТ.

echo Response | yourProgram.exe

Вы можете легко передать серию ответов, используя круглые скобки

(
  echo Response 1
  echo Response 2
  echo Response 3
) | yourProgram.exe

Вы говорите, что меняется только первый ответ - имя файла. Вероятно, вам следует использовать некоторую форму цикла FOR для повторения имен ваших файлов. Я приведу несколько примеров.

Если вы хотите обработать все файлы .TXT в определенном каталоге:

@echo off
for %%F in ("pathToYourFolder\*.txt") do (
  echo %%F
  echo ConstantColumnCount
  echo ConstantRowCount
  echo etc.
) | yourProgram.exe

Если вы хотите явно указать файлы в пакетном файле:

@echo off
for %%F in (
  file1.txt
  optionalPath1\file2.txt
  file3.txt
  etc.
) do (
  echo %%F
  echo ConstantColumnCount
  echo ConstantRowCount
  echo etc.
) | yourProgram.exe

Если вы перечислите все файлы для обработки в файле с именем FileList.txt, по одному файлу в строке:

@echo off
for /f "eol=: delims=" %%F in (FileList.txt) do (
  echo %%F
  echo ConstantColumnCount
  echo ConstantRowCount
  echo etc.
) | yourProgram.exe

Возможностей гораздо больше — команда FOR достаточно гибкая.

person dbenham    schedule 19.01.2013