从 PowerShell 运行 Bat

问题描述 投票:0回答:1

我有一个脚本最终需要启动一个批处理文件。我正在运行的命令是:

Start-Process "cmd.exe" ".\Batch.bat" -Verb runas

当我运行它时,命令提示符窗口打开,它打开到正确的文件夹,但实际上并没有启动批处理文件。窗口打开后,我可以手动输入:

.\Batch.bat

这似乎从那里开始起作用。此外,如果我尝试完全绕过 CMD 并在 PowerShell 中运行批处理文件,它会给我在 CMD 中运行它时显示的前三行,但不会给我需要输入的第一个提示,这就是为什么我正在尝试在新的 CMD 窗口中执行此操作。知道我错过了什么吗?

powershell batch-file cmd
1个回答
0
投票

Windows 将批处理文件(

*.cmd
*.bat
)视为可执行文件,因此您无需通过
cmd.exe
显式调用它们:

Start-Process '.\Batch.bat' -Verb RunAs

如果您要通过

cmd.exe
显式调用它们 - 例如确保
cmd.exe
会话保持打开 - 你必须使用
/k
(默认行为就像
/c
:执行然后退出 - 运行
cmd /?
了解详情):

Start-Process cmd.exe "/k `"$PWD\Batch.bat`"" -Verb RunAs

注意使用

$PWD
来引用 caller's 当前目录,这在 Windows PowerShell 中是必需的 ,因为
-Verb RunAs
在使用
C:\Windows\System32
时默认为
-Verb RunAs
作为工作目录。

© www.soinside.com 2019 - 2024. All rights reserved.