【问题标题】:How can you run an executable from Windows cmd and pass it both a argument parameter and redirection for file input?如何从 Windows cmd 运行可执行文件并将参数参数和文件输入重定向传递给它?
【发布时间】:2017-07-06 09:43:38
【问题描述】:

我成功地运行了我从 Windows 命令行编写的程序(文件扩展名为 .exe),要么 使用整数参数或重定向以指定来自 .txt 文件的输入。有什么办法可以两者兼得吗?

例如,Linux 中的同一个项目接受 './a.out 1

感谢您的任何和所有有用的回复, 泰勒

【问题讨论】:

  • a.exe 1 <testfile.txt 应该可以正常工作。它究竟以何种方式对您不利?
  • @IgorTandetnik 在该输入上失败并出现错误,“输入或输出无法重定向,因为指定的文件无效。”可以指定相同的文件用于相同的程序,但使用 gcc 而不是 windows 进行编译时

标签: c++ windows parameters command line


【解决方案1】:

尝试结合type commandpipe

类似:

type testfile.txt | a.exe 11

你可能需要调整一下。无法在 linux 上测试它:]

【讨论】:

  • 这可能是执行的一个不错的选择,但是对于调试我只能附加参数让调试器在执行期间传递
  • 你也可以在调试过程中使用它...在VS项目设置中你可以指定在调试开始时运行的完整程序序列...
  • @Kupto,原则上可行,但在实践中有点棘手,因为这意味着您正在调试 cmd.exe 而不是您的可执行文件。
【解决方案2】:

这行不通:

a.exe 1< testfile.txt

因为1&lt; 被解释为“重定向标准句柄#1”。对于大多数应用程序,这将起作用:

a.exe 1 < testfile.txt

(注意多余的空格!)

如果您的特定应用程序因额外空间而阻塞,并且由于某种原因您无法解决此问题,这是另一种选择:

<testfile.txt a.exe 1

【讨论】:

  • 我已经尝试过你说应该可以的那个,它没有。我又试了一次以防万一。该文件肯定与 .exe 位于同一目录中。至于你的另一个选项,它可能是一个很好的尝试,但我在 Visual Studio 中调试并且只能附加命令参数。它适用于调试 linux 但不适用于 Windows。感谢您尝试的选项。
  • 我正在 Visual Studio 中调试 - 那么为什么您的问题是说您正在从 Windows 命令行运行可执行文件?那不是一回事!
  • 在 Visual Studio 中调试时,重定向的输入文件应该在项目目录下,而不是与可执行文件在同一目录下。
  • 我的问题是如何在执行时运行它,因为我已经知道如何在 Visual Studio 中附加参数并假设它只会分散注意力。我没有考虑过输入文件不会与可执行文件位于同一目录中,因为这适用于 Linux。我试着把测试文件放到项目目录下,可执行目录下,并给它添加完整的文件路径,没有任何乐趣。
  • 我在发帖之前没有看到这篇文章:stackoverflow.com/questions/14043986/… 添加完整的文件路径后,用双引号括起来,我让文件输入工作。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-11-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-07
  • 2016-09-15
相关资源
最近更新 更多