【问题标题】:Compare output of "DOS" command to something将“DOS”命令的输出与某物进行比较
【发布时间】:2013-02-22 12:59:09
【问题描述】:

(通过 DOS,我的意思是 windows cmd.exe - 我不想对最终用户强制执行 powershell 或类似命令)

我想运行一个命令行文件,将输出打印到 CON/屏幕。

我想捕获该输出并将其与预期输出进行比较。

...在 .bat / .cmd 文件中?


具体来说,identify command of ImageMagick,我想在 +- 300 个文件上运行它,并将实际大小与预期大小进行比较。

示例输出:

$ 识别rose.jpg

rose.jpg JPEG 640x480 sRGB 87kb 0.050u 0:01

【问题讨论】:

  • 您是指文件大小还是图像大小(分辨率)?期望值以什么形式提供?
  • @zb226 我只是想捕获许多命令的文本输出,以便将其与一些预期值进行比较。

标签: batch-file dos windows-shell


【解决方案1】:

如果我正确理解了这个问题,您希望对目录中的所有 jpg 文件运行 identify 命令,并将该命令的输出捕获到文本文件中以供以后比较。然而,比较不是规范的一部分?

类似下面一行的东西应该可以完成这项工作。只需从 jpg 文件所在的文件夹中运行它:

for /R %%X in (*.jpg) do identify %%X >> PicInfo.txt 这将为您在运行命令的目录(以及由于“/R”而导致的子目录)中的每个 .jpg 文件捕获rose.jpg JPEG ... 行,并将其附加到文件 PicInfo.txt 中。

【讨论】:

  • thx - 比较不是规范的一部分,因为我有几种方法可以做到这一点(fc、comp 和其他)。我想要的技巧是将命令的输出放入一个文件中,以便与预期的输出进行比较。 for /R>> 的组合是我需要的技巧。
【解决方案2】:

您可以使用将控制台输出重定向到文件的符号(即> 字符)调用您的identify 程序。比如:

identify rose.jpg > myoutput.txt

此外,>> 会将输出附加到文件中已有的内容。所以使用

identify rose.jpg >> myoutput.txt

...应该创建一个包含所有输出的文件。

然后您可以使用 DOS COMP 命令比较两个文件的内容。语法是:

COMP [data1] [data2] [/D] [/A] [/L] [/N=number] [/C] [/OFF[LINE]]

您还可以使用 > 符号重定向到输出文件。

【讨论】:

    猜你喜欢
    • 2019-08-20
    • 1970-01-01
    • 2021-08-10
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多