为啥以下 Hello World 程序在 PowerShell 上没有显示任何输出?相同的程序在 CMD 上显示正确的输出

Posted

技术标签:

【中文标题】为啥以下 Hello World 程序在 PowerShell 上没有显示任何输出?相同的程序在 CMD 上显示正确的输出【英文标题】:Why is the following Hello World program not showing any output on PowerShell ? The same program show correct output on CMD为什么以下 Hello World 程序在 PowerShell 上没有显示任何输出?相同的程序在 CMD 上显示正确的输出 【发布时间】:2020-06-14 04:44:39 【问题描述】:

好的,这是一个 C++ .NET 控制台 Hello World 应用程序。

代码:

#include <iostream>

using namespace std;

int main() 
    cout << "Hello World" << endl;
    return 0;

上述程序在 Visual Studio 中调试时工作正常,并按预期输出“Hello World”。当从 CMD 执行程序时,会显示相同的行为。

但是,当我从 PowerShell 执行这个程序时,什么也没有发生!就好像没有 cout 语句,程序就退出了。请帮忙

【问题讨论】:

你是如何运行它的?是不是像this? 是的,编译后,我使用命令 Hello.exe 从 PowerShell 运行 exe 文件。遵循您引用的链接,如果我使用 ./Test 或 .\Test 而不是 Test 或 Test.exe 从 PowerShell 执行程序,程序输出就好了。仍然有疑问,为什么 powershell 没有使用简单的 Test 命令显示任何输出? &amp; ".\test.exe" arg1 arg2 arg3 一样运行它,如果你还没有,也许试试cmd /c "test.exe" 为什么从powershell执行程序的其他方式不起作用?即为什么编写Test不起作用但./Test或.\Test起作用? Test.exe 保留用于已导入到 powershell 的二进制模块或路径环境变量的一部分我相信,当您运行脚本或其他内容时,您必须放置完整路径,因为它没有定义默认在powershell中。 .\ 仅表示当前目录。 【参考方案1】:

在powershell中运行exe主要像

& ".\test.exe" arg1 arg2 arg3

也许

cmd /c "test.exe"

如果你像运行脚本一样

test.exe

大多数情况下它不会起作用,因为这样的调用是为 path 环境变量中的导入二进制模块或文件保留的。 .\ 代表当前目录(即gci .\),因此要运行您的exe 文件,您需要使用

调用该文件
& .\test.exe
& "C:\Program Files\Git\cmd\git.exe"

或者只是没有与号 &amp; 并使用完整路径

C:\Path\To\File\Without\Spaces.exe
C:\"Program Files"\Git\cmd\git.exe
.\test.exe

【讨论】:

谢谢它的工作!顺便说一句,添加到路径也确实有效!

以上是关于为啥以下 Hello World 程序在 PowerShell 上没有显示任何输出?相同的程序在 CMD 上显示正确的输出的主要内容,如果未能解决你的问题,请参考以下文章

为啥“Hello world”会打印 2 次?

为啥“hello” + + '/' + “world” == “hello47world”?

为啥我用电脑输入最简单的vbs程序也报错?

为啥任务管理器显示的内存大于我的简单 hello world java 应用程序的最大堆内存?

为啥这段代码使用 Math.pow 打印“HELLO WORLD”?

为啥“hello\\s*world”与“hello world”不匹配?