У меня есть gnuwin32
иЮФУ. И команда тоже script.exe
.
Кто-нибудь знает, есть ли script.exe
эквивалент для Windows, кроме Cygwin, который я не хочу устанавливать (по причинам, не имеющим отношения к данному обсуждению)?
решение1
Нет, в Windows нет эквивалента этой script
команде. Поверьте мне,Я искал везде и всюду.
В любом случае, вы можете использовать перенаправление, чтобы выполнить хотя бы половину этого. Вы не увидите вывод во время выполнения, но вы можете увидеть его позже в файле. К сожалению, это компромисс, но он может подойти в крайнем случае.
Единственное, на что вам нужно обратить внимание, это то, что некоторые программы пишут в более чем один поток. В дополнение кстандартный выход( stdout
), они также могут написатьстандартная ошибка( stderr
) илистандартный журнал( stdlog
). Поэтому, чтобы убедиться, что вы захватиливсевывод, вам необходимо перенаправить и stdout
и stderr
(в Windows stdlog
автоматически перенаправляется на stdout
). В примере ниже компилятор Microsoft ( cl.exe
) печатает баннер (текст заголовка) на stderr
, а остальной текст справки на stdout
.
C:\> cl /? > foobar.txt 2>&1
решение2
Боюсь, что копирование-вставка — единственный способ (перенаправление вывода не эквивалентно команде скрипта).
В соответствии сФорум поддержки Microsoft
Откройте командную строку cmd в оконном формате, т. е. не на весь экран...
Теперь щелкните правой кнопкой мыши на заголовке cmd promt, т.е. на синей полоске сверху, и там есть опция редактирования. Там выберите опцию пометить, т.е. редактировать->пометить,.Вы получите курсор в cmd promt, просто выберите область, которую вы хотите скопировать... затем снова перейдите в правый верхний клик по редактированию-> копировать
Теперь просто вставьте в текстовый файл, и вы получите содержимое командной строки в текстовом файле...
решение3
Насколько мне известно, нет ничего, что не относится к Cygwin; но каковы бы ни были причины, по которым вы не хотите использовать Cygwin, вы можете пересмотреть свое решение, зная, чтовы можете отделить его script.exe от cygwin и удалить ненужные части cygwin. Будет некрасиво, но работает и портативно, у меня занимает 5 МБ.
TL;DRсоздать bin
каталог в любом месте и с ручной установкойutil-linuxпакет cygwin, скопируйте в него эти файлы, bin
а затем удалите остальную часть cygwin:
bin\cyggcc_s-1.dll
bin\cygiconv-2.dll
bin\cygintl-8.dll
bin\cygncursesw-10.dll
bin\cygreadline7.dll
bin\cygwin1.dll
bin\script.exe
bin\sh.exe
Вот и все. Далее следует намеренно очень подробное описание того, как это можно выяснить, как установить cygwin и все остальное.
цигвин:util-linuxупаковка
Команда script
(страница руководства) существует для windows как нестандартная часть cygwin, называемая script.exe
. Вам нужно вручную выбрать его пакет для установки, в настоящее время он находится в пакете, называемомutil-linux. (обратите внимание, что хотя это и нежелательно, технически возможно отделить script.exe от установки cygwin, если вы предоставите его зависимости)
После того, как у вас есть script.exe
, вы можете записать сеанс cmd, начав script.exe -c cmd.exe
и набрав exit
в конце. Вы можете задать имя выходного файла с помощью, например, переключателя -a
, имя по умолчанию typescript
и перезаписать.
Чтобы узнать, какой exe-файл (или другой файл) находится в каком пакете, вы можете поискать содержимое пакетов cygwin в Интернете:http://www.cygwin.com/packages/Например, найдите «script.exe».
К вашему сведению, вы можете просмотреть страницу руководства для script
команды в системе Linux, используямужчинакоманду, набрав man script
вТерминал(если у вас установлены man-страницы) или онлайнидет поискключевые слова "man script typescript".
Theкарманэээ... руководство по рюкзаку для cygwin:
о cygwin
Cygwin связывает каждый exe с его собственным .dll, поэтому требует копию этих dll в дополнение к своим exe-файлам, но в остальном может использоваться как набор обычных, родных для Windows exe-файлов. Однако стандартный способ использования cygwin — установить его через егоустановщик. Сообщается, что базовый пакет весит около 30 МБ для скачивания и 90 МБ для извлечения, но вы можете выбрать дополнительные пакеты, такие какutil-linuxдля дополнительных exe-файлов, таких как script.exe
.
установка пакетов
Вы можете установить пакеты, запустив cygwinустановщик, в настоящее время называется setup-x86.exe
для x86 (ранее он назывался setup.exe
. Также он иногда обновляется. Например, старый setup.exe больше не работает, потому что пути на серверах изменились; вам нужно загрузить новый). Вы переходите вперед по принципу «следующий-следующий-следующий» в установщике, пока не увидите что-то похожее на список пакетов.
Вверху нажмите опцию "держать" и вид на "Полный" если вы спросите меня. Наведите указатель мыши, чтобы увидеть подсказки с информацией о том, что это значит.
подробный способ добраться до списка пакетов
Чтобы получить список пакетов на x86, обычно делается следующее:скачатьи запустите setup_x86.exe
, нажмите «Далее» для экрана приветствия, выберите «Установить из интернета» и нажмите «Далее», выберите каталог установки и нажмите «Далее», выберите временный каталог кэша пакетов и нажмите «Далее», выберите «Прямое подключение» (или что вам нужно) и нажмите «Далее», если он может загрузить список зеркал, он на самом деле в алфавитном порядке для английских названий стран (трудно поверить, но это так), вы можете увидеть это по окончаниям доменного имени (сначала .com/.net/.org, затем, например, .au, .de, .gr и т. д.). Выберите зеркало, которое, по вашему мнению, находится ближе к вам, и нажмите «Далее», если загрузка прошла успешно, вы можете увидеть список пакетов.
размер установки + портативность
Cygwin может быть установлен через его установщик, но каталог, который он создает, на самом деле портативный. Я использовал zip с 7z, извлекал и использовал его на других компьютерах с успехом.
Установка по умолчанию, как утверждается, составляет 90 МБ для извлечения и 30 МБ для загрузки. Вы можете посмотреть пример пакетов по умолчанию наэта нить набблчтобы иметь представление о том, что устанавливать в минимальную систему. Вы можете на самом деле отменить выбор этих пакетов и выбрать только, например.util-linuxпри установке, и установщик cygwin спросит вас, хотите ли вы установить зависимости (требования) util-linux тоже. Я не уверен, что отмена выбора пакетов по умолчанию все равно установит терминал mintty.exe
или bash
, которые удобны и обычно ожидаются средой cygwin, хотя они на самом деле не нужны для использования любого из exe-файлов cygwin.
разделение script.exe от cygwin
ПРИМЕЧАНИЕчто нецелесообразно разделять какую-либо часть установки Cygwin, не потому что это не может работать, а потому что если у вас есть более одного ex-файла, зависящего от cygwin.dll, то всякий раз, когда cygwin.dll обновляется и вы случайно создаете копию нового dll для другого ex-файла, загрузка dll может попытаться загрузить неправильный dll, например, если он находится в PATH в более ранней позиции по сравнению с другим.
Тем не менее, чтобы отделить script.exe (и потенциально удалить остальную часть cygwin) - вы можете это сделать, вы копируете его зависимости dll, но этого недостаточно. Он пытается загрузить sh.exe, даже если вокруг нет оболочек unixy, поэтому ему также нужен sh.exe, но он все равно не найдет его, если вы не поместите их в каталог под названием "bin" (который может быть где угодно, кстати). Таким образом, чтобы иметь функциональный script.exe, отделенный от cygwin, вам нужны эти файлы в этой структуре (на момент написания этой статьи):
bin\cyggcc_s-1.dll
,
bin\cygiconv-2.dll
,
bin\cygintl-8.dll
,
bin\cygncursesw-10.dll
,
bin\cygreadline7.dll
,
bin\cygwin1.dll
,
bin\script.exe
,
bin\sh.exe
,
bin
Кстати, каталог может быть где угодно .
Вы можете получить зависимость dll, например, с помощью плагина листинга Total Commander.fileinfo
решение4
Похоже, ты хочешь получить tee
команду. Ты можешь ее получить.здесь. Tee позволяет читать из стандартного ввода и записывать в стандартный вывод и файлы.