是否可以默认在 Windows 终端中运行脚本?

Fra*_*umn 9 powershell command-line windows-terminal

我时不时运行的 power shell 和 cmd 脚本很少。当我单击 bat 脚本时,它会打开一个经典的 CMD 窗口。当我运行 PS1 脚本时,它会打开经典的 PowerShell 窗口。

当我运行它们时,是否可以默认在新的 Windows 终端中打开它们?不,我不想打开终端、导航到脚本并运行它。我只想单击 .bat 并让它在 Windows 终端应用程序内的 CMD 窗口中运行。

这可以做到吗?

我尝试找到终端 exe,以便将 ps1 文件设置为用它打开,但当我尝试这样做时出现错误。请参阅屏幕截图。

在此输入图像描述

谢谢!

pos*_*ote 4

我将其放在这里是因为它太短,无法发表评论,并且您不是在询问 PowerShell 代码问题/问题,而是询问“如何配置我的环境/选择的工具,以执行 X 或 Y”。

  1. Windows 终端不是 shell/命令处理器。
  2. WT中没有run的概念。
  3. 仅使用命令处理器、PowerShell 或 cmd.exe 运行。cmd.exe 执行.bat、.cmd、.vbs。Powershell 执行.ps
  4. WT 在启动时启动默认的 shell/命令处理器。
  • PowerShell.exe
  • 密码工具
  • 执行程序
  • 执行程序
  • 执行程序

...您在 WT 设置中配置的任何处理器。

即使您对此进行了重新修改,它仍然只会运行您在 JSON 设置中配置的默认 shell/命令处理器。那么,为什么要启动 shell 主机,只是为了运行 shell/命令处理器。

NotTheDr01ds当右键单击 .ps1 文件并尝试将其更改为 WT.exe 时,显示的内容已经是默认值,这将无法像您想象的那样工作。

您可以首先使用 WinKey + R 并输入以下内容来向自己证明这一点。一个不行,另一个行。

wt d:\scripts\hello.ps1
# Results - error and locks WT
<#
[error 0x800700c1 when launching `d:\scripts\hello.ps1']
#>
wt powershell -noprofile -noexit d:\scripts\hello.ps1
# Results - runs the script as expected
<#
Hello World

Tuesday, 23 March, 2021 20:15:28
#>
Run Code Online (Sandbox Code Playgroud)

因此,任何 reg hack 都需要您指定命令处理器、文件名以及成功运行所需的任何参数。正如我的评论中所指出的。您可以避免重新修改,只需创建一个快捷方式并将该快捷方式添加到您的 SendTo 菜单中即可。在 Windows 资源管理器中,只需键入...

shell:SendTo
Run Code Online (Sandbox Code Playgroud)

或者在 PowerShell 中执行以下操作:

explorer shell:SendTo
Run Code Online (Sandbox Code Playgroud)

...并将您的快捷方式粘贴到那里(我那里有很多),然后您必须更改设置。

# Example:
"C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.6.10571.0_x64__8wekyb3d8bbwe\wt.exe" powershell -noprofile -noexit
Run Code Online (Sandbox Code Playgroud)

我提前告知您,这遇到了一些问题。

有时有效,有时无效。

当然,现在,如果您想对任何命令处理器执行此操作,那么您需要创建多个快捷方式,根据需要更改它们,并将它们粘贴到 SendTo 文件夹,然后右键单击您的文件,然后选择正确的快捷方式发送至快捷方式。