gpt4 book ai didi

c++ - 确定程序是在Powershell还是CMD上运行

转载 作者:行者123 更新时间:2023-12-02 02:06:48 25 4
gpt4 key购买 nike

我创建了一个程序,应该重命名一些文件

system("rename file.txt file2.txt"); // examples only

cmd 上运行良好,但在 powershell

rename : The term 'rename' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ rename
+ ~~~~~~
+ CategoryInfo : ObjectNotFound: (rename:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

作者:This article from MSpowershell应该使用rename-item
但是,我不知道有什么“技巧”来确定程序是否由powershell运行或 cmd
帖子 for determine program's run by which ,使用进程检查,我发现很难实现(他们说使用 wmic.exe ,但我不知道如何使用,需要进一步研究)


结论:

How to determine whether my programs runs on powershell or cmd by C++ ?
Is it possible, by knowing the console used ( programmingly ) , my programs could use if-else method to change the command?

编辑:暂时,我的程序的方法是读取file.txt并将其粘贴到file2.txt中(仅示例)..基本上类似于复制并粘贴到另一个重命名的文件并使用system("del file.txt");

最佳答案

How to determine whether my programs runs on powershell or cmd by C++

虽然这是可能的,但它与您的用例也无关,因为启动程序的 shell 是您程序的进程(您无法向其提交命令) .

由于您的程序必须启动其自己 shell(子)进程才能执行 shell 命令,因此您可以选择调用哪个 shell .

system() C 库函数以主机平台的默认 shell为目标,即 cmd.exe 在 Windows 上(以及 /bin/sh 在类 Unix 平台上),因此您的命令 - 使用内部 cmd.exe rename 命令 - 无论您的程序是从 PowerShell 还是从 cmd.exe 调用,都可以正常工作。

关于c++ - 确定程序是在Powershell还是CMD上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68336280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com