为啥以下 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 命令显示任何输出? 像& ".\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"
或者只是没有与号 &
并使用完整路径
C:\Path\To\File\Without\Spaces.exe
C:\"Program Files"\Git\cmd\git.exe
.\test.exe
【讨论】:
谢谢它的工作!顺便说一句,添加到路径也确实有效!以上是关于为啥以下 Hello World 程序在 PowerShell 上没有显示任何输出?相同的程序在 CMD 上显示正确的输出的主要内容,如果未能解决你的问题,请参考以下文章
为啥“hello” + + '/' + “world” == “hello47world”?
为啥任务管理器显示的内存大于我的简单 hello world java 应用程序的最大堆内存?