cygwin:util-linux包裹

cygwin:util-linux包裹

gnuwin32西弗吉尼亚大学. 也没有script.exe命令。

是否有人知道除了 Cygwin 之外是否还有script.exe适用于 Windows 的等效软件,而我不想安装它(原因与本次讨论无关)?

答案1

不,Windows 上没有与该script命令等效的命令;相信我,我到处寻找

无论如何,您可以使用重定向来完成至少一半的工作。在执行期间您将看不到输出,但之后您可以在文件中看到它。不幸的是,这是一种妥协,但在紧急情况下它可以做到。

唯一需要注意的是,有些程序会写入多个流。此外标准输出stdout),他们也可以写信至标准误差stderr) 或者标准日志stdlog)。因此,为了确保你捕捉到全部输出,您需要重定向stdoutstderr(在 Windows 中,stdlog会自动重定向到stdout)。在下面的示例中,Microsoft 编译器 ( cl.exe) 将横幅(标题文本)打印到stderr,并将帮助文本的其余部分打印到stdout

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

答案2

恐怕复制粘贴是唯一的方法(重定向输出不等同于脚本命令)。

根据Microsoft 帮助论坛

以窗口格式打开 cmd 提示符,即不是全屏...

现在右键单击 cmd 提示符的顶部,即顶部的蓝色条带,然后有一个编辑选项。选择选项标记,即编辑->标记。您将在 cmd 提示符中看到一个光标,只需选择要复制的区域...然后再次转到顶部右键单击编辑->复制

现在只需在文本文件中粘贴,您就会在文本文件中获得 cmd 提示符的内容......

答案3

据我所知,没有非 Cygwin;但无论你不想要 Cygwin 的原因是什么,你都可以重新考虑一下,因为你知道您可以将其 script.exe 从 cygwin 中分离出来,并删除 cygwin 中不需要的部分。虽然不好看,但能用而且便携,对我来说只占 5MB。

总结在任何地方创建一个bin目录,并手动安装util-linuxcygwin 包,将这些文件复制到其中,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.exeexit-atypescript


要查找哪个 exe(或其他文件)在哪个包中,您可以在线搜索 cygwin 包的内容:http://www.cygwin.com/packages/例如查找“script.exe”。

供参考,您可以script使用 Linux 系统中的男人命令,man script输入终端(如果您安装了手册页),或者通过在线搜索关键字“man script typescript”。


口袋呃.. cygwin 背包指南:

关于 cygwin

Cygwin 将每个 exe 链接到其自己的 .dll,因此除了 exe 文件之外,还需要这些 dll 的副本,但除此之外,它还可以用作普通的 Windows 原生 exe 文件的集合。但是,使用 cygwin 的标准方法是通过其安装程序。据报道,基本包下载量约为 30MB,解压后约为 90MB,但你可以选择额外的包,例如util-linux对于其他 exes 类似script.exe

安装软件包

你可以通过运行 cygwin 安装软件包安装程序,目前setup-x86.exe用于 x86(以前称为setup.exe。它偶尔也会有更新。例如,旧的 setup.exe 不再工作,因为服务器上的路径已更改;您需要下载新的)。您在安装程序中以下一步下一步的方式前进,直到看到类似于软件包列表的内容。

在顶部点击选项“保持“并查看”满的“如果你问我。将鼠标悬停在信息工具提示上,了解这些是什么意思。

获取软件包列表的详细方法

要获取软件包列表,通常在 x86 上执行以下操作:下载然后启动setup_x86.exe,点击“下一步”进入欢迎屏幕,选择“从互联网安装”并点击下一步,选择您的安装目录并点击下一步,选择一个临时包缓存目录并点击下一步,选择“直接连接”(或您需要的任何内容)并点击下一步,如果它可以下载镜像列表,它实际上是按照国家英文名称的字母顺序排列的(难以置信但却是真的),您可以从域名结尾看到它(首先是 .com/.net/.org,然后是 .au、.de、.gr 等)。选择您认为离您最近的镜像并点击下一步,如果下载成功,您就可以看到软件包列表。

安装大小 + 可移植性

Cygwin 可以通过其安装程序进行安装,但它创建的目录实际上是可移植的。我曾经用 7z 压缩它,然后解压并在其他计算机上成功使用。

据称默认安装解压后大小为 90MB,下载后大小为 30MB。您可以在以下位置查看默认安装包的示例这个线程了解要安装哪些内容到最小系统。您实际上可以取消选择这些软件包,而只选择例如。util-linux在安装时,cygwin 安装程序会询问您是否也要安装 util-linux 的依赖项(要求)。我不确定取消选择默认软件包是否仍会安装终端mintty.exebash,尽管它们对于使用任何 cygwin exes 来说实际上都不是必需的,但它们很方便并且通常是 cygwin 环境所期望的。


将 script.exe 与 cygwin 分离

笔记分离 cygwin 安装的任何部分都是不明智的,这并不是因为它无法工作,而是因为如果您有多个 exe 依赖于 cygwin.dll,则每当 cygwin.dll 更新并且您恰好为另一个 exe 复制了新的 dll 时,dll 加载可能会尝试加载错误的 dll,例如,如果它在 PATH 中的位置比另一个更靠前。

也就是说,要分离 script.exe(并可能删除 cygwin 的其余部分) - 您可以这样做,复制它的 dll 依赖项,但这还不够。即使周围没有 unixy shell,它也会尝试加载 sh.exe,因此它还需要 sh.exe,但除非您将它们放在名为“bin”的目录中(顺便说一下,这个目录可能在任何地方),否则它仍然找不到它。因此,要将功能齐全的 script.exe 与 cygwin 分离,您需要以下结构中的这些文件(截至撰写本文时):

bin\cyggcc_s-1.dll,,,,,,,,, bin\cygiconv-2.dllbin\cygintl-8.dllbin\cygncursesw-10.dllbin\cygreadline7.dllbin\cygwin1.dllbin\script.exebin\sh.exe

顺便说一下,目录bin可以位于任何地方

例如,您可以使用 Total Commander lister 插件获取 dll 依赖项文件信息

通过 Total Commander Lister 插件“fileinfo”查看 dll 依赖关系

答案4

听起来你想要这个tee命令。你可以得到它这里. Tee 让你从标准输入读取并写入标准输出和文件。

相关内容