DOS и/или версии Windows команды Unix SCRIPT

Назад в университете, когда мы должны были отправить присвоение в CS, мы должны будем выполнить серию шагов включая выполнение script, date, whoami, etc., и затем запущение нашей программы.

script команда передала бы по каналу весь текст, отправленный на дисплей и к дисплею и к указанному файлу также.

С тех пор я искал DOS и/или версию Windows, но подошел пустой. Некоторые программы могут быть перенаправлены в файл, но затем дисплей не отражен, и некоторые программы, кажется, не работают с перенаправлением вообще.

Какие-либо идеи?


Править:

До сих пор ответы, которые я получил, кажется, работают точно как стандартные команды перенаправления (<, >, |). Они не работают со всеми программами. Например, Microsoft C ++ компилятор CL.EXE. Если Вы работаете cl /? посредством команды перенаправления или канала это через другую программу (такую как МИШЕНЬ), Вы не получите заголовок/текст заголовка.

Другим примером является программа, которую я записал некоторое время назад в Паскале (я думаю, что последняя компиляция была в FreePascal). Текст справки не становится перенаправленным вообще. Я видел, что это происходит с другими программами также как MKISOFS. Это имеет длинный текст справки, но не может быть приостановлено путем передачи по каналу его через БОЛЬШЕ или перенаправлено в файл!

Я много лет задавался вопросом об этом. Я раньше думал, что это может быть, потому что текст пишется непосредственно в экран (например, порт B800) или что-то, но я должен все же придавить причину, уже не говоря о находке программа, которая может сделать это задание.

5
задан 31.08.2011, 07:57

4 ответа

Смотрите на Cygwin, он предоставляет Вам доступ ко всем тем большим инструментам командной строки UNIX в Windows.

2
ответ дан 07.12.2019, 17:21

К сожалению, кажется, что у Вас не будет удачи при нахождении out-of-the-box решения Microsoft. Можно проверить подобное сообщение на StackOverflow. Обзор:

1
ответ дан 07.12.2019, 17:21

Я нашел порт Cygwin команды сценария Unix. Это получает и STDOUT и STDERR (таким образом, это производило заголовок из cl.exe).

Однако получение команд cmd.exe является немного замысловатым по двум причинам:

  • сценарий порождает оболочку удара cygwin (не cmd.exe)
  • сценарий не работает при запуске с оболочки cmd.exe; это должно быть запущено с cygwin.

Можно сделать это, хотя:

  1. откройте оболочку cygwin.
  2. запустите сценарий
  3. запустите оболочку cmd.exe из оболочки cygwin
  4. сделайте свой материал в cmd.exe
  5. выход из cmd.exe
  6. выход из сценария

*также оболочка cmd.exe, порожденная из cygwin, действует немного странная, но команды, кажется, работают:

  • окно, которое обычно открывается, при попытке выполнить cl.exe без первого под управлением vcvars32.bat, не подходит
  • консольный вход является очень привередливым (например, ввод ОСТАВЛЕННОЙ ПРАВИЛЬНОЙ статьи, или статья не работает.)
1
ответ дан 07.12.2019, 17:21

Этот FAQ генерала Pascal объясняет причину, а также решение для программ Turbo Pascal.

Q. Когда я перенаправляю экранный вывод своих программ в файл, файл пуст, и вывод все еще появляется на экране. Что я делаю неправильно?

A. Вы, вероятно, используете единицу CRT, и ее метод по умолчанию записи в stdout прямыми экранными записями. Чтобы позволить выводу быть перенаправленным, все записи должны быть сделаны DOS. Установка переменного DirectVideo ко лжи не имеет никакого эффекта на перенаправление как все, что это делает использовать BIOS для экранных записей - не DOS.

Для включения перенаправления, Вы не должны использовать единицу CRT

ИЛИ

assign(output,'');
rewrite(output);

Это заставит весь вывод пройти DOS и таким образом может быть перенаправлено при желании. Восстановить ситуацию по умолчанию:

AssignCRT(output);
rewrite(output);
1
ответ дан 07.12.2019, 17:21

Теги

Похожие вопросы