我有一个脚本最终需要启动一个批处理文件。我正在运行的命令是:
Start-Process "cmd.exe" ".\Batch.bat" -Verb runas
当我运行它时,命令提示符窗口打开,它打开到正确的文件夹,但实际上并没有启动批处理文件。窗口打开后,我可以手动输入:
.\Batch.bat
这似乎从那里开始起作用。此外,如果我尝试完全绕过 CMD 并在 PowerShell 中运行批处理文件,它会给我在 CMD 中运行它时显示的前三行,但不会给我需要输入的第一个提示,这就是为什么我正在尝试在新的 CMD 窗口中执行此操作。知道我错过了什么吗?
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
作为工作目录。