powershell vs cmd 关于执行后不关闭 cmd/powershell window

powershell vs cmd regarding not closing the cmd/powershell window after execution

我有一个 ipsxe-comp-vars.bat 批处理文件,它为 intel fortran 编译器以及 c 和 c++ 编译器设置环境变量。我为它创建了一个快捷方式,我右键单击快捷方式,转到目标并放置 cmd.exe/K 的路径(这样命令提示符就不会关闭)和 space里面的.bat的路径前,点击apply就ok了。然后我可以将快捷方式固定到任务栏。当我点击它时:bat 被执行,最后,我回到了命令提示符,cmd window 没有关闭。然后我可以在这个命令 windows.

中开始编译等

在与 .bat 文件相同的位置,我创建了一个 ipsxe-comp-vars.ps1 文件:

Set-ExecutionPolicy -Scope CurrentUser Unrestricted
Set-Location "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017.4.210\windows\bin"
& "C:\Windows\System32\cmd.exe" /E:ON /V:ON "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017.4.210\windows\bin\ipsxe-comp-vars.bat" intel64 vs2015

然后我为这个.ps1文件创建一个快捷方式,右键单击快捷方式,然后修改它的目标如下:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit - command "& 'C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017.4.210\windows\bin\ipsxe-comp-vars.ps1'"

那我也可以将这个新的快捷方式固定到任务栏。当我点击它时:.ps1 文件被执行,但 window 关闭,在这种情况下消除了快捷方式概念的杠杆作用。

我做错了什么?

尝试以下设置 -noexit 快捷方式的方法。

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -noexit -File "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017.4.210\windows\bin\ipsxe-comp-vars.ps1"

-命令

执行指定的命令(和任何参数),就好像它们是在 PowerShell 命令提示符下键入的一样,然后退出,除非指定了 NoExit 参数。本质上,-Command 之后的任何文本都作为单个命令行发送到 PowerShell(这与 -File 处理发送到脚本的参数的方式不同)。

-文件[]

在本地范围 ("dot-sourced") 中运行指定的脚本,以便脚本创建的函数和变量在当前会话中可用。输入脚本文件路径和任何参数。 File 必须是命令中的最后一个参数,因为在 File 参数名称之后键入的所有字符都被解释为后跟脚本参数及其值的脚本文件路径。

您可以在 File 参数的值中包含脚本的参数和参数值。例如:-File .\Get-Script.ps1 -Domain Central 请注意,传递给脚本的参数是作为文字字符串传递的(在当前 shell 解释之后)。例如,如果您在 cmd.exe 中并且想要传递一个环境变量值,您将使用 cmd.exe 语法: powershell -File .\test.ps1 -Sample %windir% 如果您使用 PowerShell 语法,那么在此示例中您脚本将接收文字“$env:windir”而不是该环境变量的值:powershell -File .\test.ps1 -Sample $env:windir

通常,脚本的开关参数要么被包含,要么被省略。例如,以下命令使用 Get-Script.ps1 脚本文件的 All 参数:-File .\Get-Script.ps1 -All

https://docs.microsoft.com/en-us/powershell/scripting/core-powershell/console/powershell.exe-command-line-help?view=powershell-6