7

У меня есть gnuwin32 и SFU. Ни один из них не имеет команды script.exe .

Кто-нибудь знает, есть ли для Windows script.exe , отличный от Cygwin, который я не хочу устанавливать (по причинам, не относящимся к этому обсуждению)?

5 ответов5

5

Нет, Windows не эквивалентна команде script ; поверь мне, я искал все выше и ниже.

В любом случае вы можете использовать перенаправление, чтобы выполнить хотя бы половину этого. Вы не увидите вывод во время выполнения, но потом увидите его в файле. К сожалению, это компромисс, но он может сделать, когда в крайнем случае.

Единственное, на что вам нужно обратить внимание - это то, что некоторые программы пишут в несколько потоков. В дополнение к стандартному выводу (stdout), они также могут записывать в стандартную ошибку (stderr) или в стандартный журнал (stdlog). Поэтому, чтобы убедиться, что вы перехватываете все выходные данные, вам нужно перенаправить как stdout и stderr (в Windows stdlog автоматически перенаправляется на stdout). В приведенном ниже примере компилятор Microsoft (cl.exe) печатает баннер (текст заголовка) в stderr , а остальную часть справки - в stdout .

C:\> cl /? > foobar.txt 2>&1
3

Я боюсь, что копирование-вставка - единственный способ (перенаправление вывода не является эквивалентом команды скрипта).

Согласно справочному форуму Microsoft

Откройте командную строку в формате окна, т.е. не в полноэкранном режиме ...

Теперь щелкните правой кнопкой мыши на заголовке команды cmd, то есть на синей полосе вверху, и есть возможность редактирования. Там выберите опцию mark, т.е. edit-> mark ,.Вы получите курсор в приглашении cmd, просто выберите область, которую вы хотите скопировать ... затем снова перейдите в верхний правый клик, нажмите edit-> copy

Теперь в текстовый файл просто вставьте, и вы получите содержимое команды cmd в текстовом файле ...

3

Есть обходные пути, чтобы делать то, что вы хотите.

Пакет утилит cygwin (Google Cygwin, чтобы найти его) на самом деле имеет команду сценария. Если вы установите этот пакет, измените соответствующую переменную PATH и наберите script -c cmd, он запустит оболочку dos и захватит ввод и вывод в файле с именем typcript. Команда script имеет несколько параметров. (Я оставляю читателю в качестве упражнения поиск документации :)

Cygwin установит много вещей на ваш компьютер. Если вы хотите сохранить простоту, вы можете установить команду tee, как указано выше, и набрать cmd | имя файла по вашему выбору. Это будет захватывать ввод и вывод в имени файла по вашему выбору.

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

Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft
Corporation.  All rights reserved.

C:\Users\David>echo topshell topshell

C:\Users\David>doskey /h echo topshell doskey /h

C:\Users\David>cmd | tee log.txt Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\David>echo subshell subshell

C:\Users\David>doskey /h echo subshell doskey /h

C:\Users\David>exit

C:\Users\David>doskey /h echo topshell doskey /h cmd | tee log.txt
doskey /h

C:\Users\David>type log.txt Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\David>subshell

C:\Users\David>echo subshell doskey /h

C:\Users\David> C:\Users\David>

Я только что попробовал оба решения. Второй (cmd | tee ...) лучше, так как он позволяет вызывать команды с помощью клавиш со стрелками. Первое решение (script.exe) нет.

1

Звучит так, будто ты хочешь команду « tee . Вы можете получить это здесь . Ти позволяет читать со стандартного ввода и записи в стандартный вывод и файлы.

1

Нет не Cygwin, что я знаю; но каковы бы ни были ваши причины отказа от Cygwin , вы можете пересмотреть их, зная, что вы можете отделить его script.exe от cygwin и удалить ненужные части cygwin. Будет некрасиво, но работает и портативно, занимает у меня 5 МБ.

TL; DR создайте каталог bin любом месте и, установив вручную пакет cygwin util-linux , скопируйте эти файлы в этот 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 и все остальное.


пакет 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, набрав man script на терминале (если у вас установлены man-страницы), или онлайн- поиск по ключевым словам "man script typcript".


карман эээ .. руководство рюкзака к cygwin:

о Cygwin

Cygwin связывает каждый exe-файл со своей собственной .dll, поэтому требует наличия копии этих dll в дополнение к своим exe-файлам, но в противном случае его можно использовать как коллекцию обычных, exe-файлов Windows. Однако стандартный способ использования 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 может быть установлен через установщик, но каталог, который он создает, на самом деле является переносимым. Я имел обыкновение архивировать это с 7z и извлекать и использовать это на других компьютерах с успехом.

Утверждается, что установка по умолчанию занимает 90 МБ и 30 МБ для загрузки. Вы можете привести пример пакетов по умолчанию в этой цепочке, чтобы иметь представление о том, что устанавливать в минимальную систему. Вы можете отменить выбор этих пакетов и выбрать только например. Утилита linux при установке, и установщик cygwin спросит вас, хотите ли вы также установить зависимости (требования) util-linux. Я не уверен, что если отменить выбор пакетов по умолчанию, все равно будет установлен терминал mintty.exe или bash , которые удобны и обычно ожидаются средой cygwin, хотя на самом деле они не нужны для использования каких-либо exe-файлов cygwin.


отделение script.exe от cygwin

ОБРАТИТЕ ВНИМАНИЕ , что вы не осознаете, что вы разделяете какую-либо часть установки cygwin не потому, что она не может работать, а потому, что если у вас есть более одного exe, полагайтесь на cygwin.dll, каждый раз, когда cygwin.dll обновляется, и вы делаете копирование новой dll для другого exe, загрузка dll может попытаться загрузить неправильную dll, например, если она находится в PATH в предыдущей позиции по сравнению с другой.

Тем не менее, для разделения script.exe (и, возможно, удалить оставшуюся часть Cygwin) - вы можете сделать это, вы копируете его зависимости dll, но этого недостаточно. Он пытается загрузить sh.exe, даже если вокруг нет unixy-оболочек, поэтому ему также нужен sh.exe, но он все равно не найдет его, если вы не поместите их в каталог с именем "bin" (который может быть где угодно, Кстати). Таким образом, чтобы функциональный скрипт.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 lister fileinfo.

зависимость dll через плагин Total Commander Lister "fileinfo"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .