从 Powershell 脚本运行 BAT 文件

Siddharth Bishnoi 2023年1月30日
  1. 创建并运行 PowerShell 脚本
  2. 从 PowerShell 脚本运行批处理文件
  3. 从 PowerShell 脚本中运行一个带参数的批处理文件
  4. 从 PowerShell 运行批处理命令
  5. 结论
从 Powershell 脚本运行 BAT 文件

批处理文件由一系列按顺序逐行执行的命令组成。这些批处理文件在 cmd.exe 中执行,这是一个最初为 Windows NT 系列发布的命令行解释器。

同样,PowerShell 文件是由 PowerShell 命令行界面执行的命令列表组成的文本文件;它以 .ps1 扩展名保存。它是适用于 Windows 的最新 shell 和脚本工具,也是更高级的 cmd 版本。

要从 PowerShell 脚本运行 .bat 文件,你可以从 PowerShell 手动运行它。但是,将 .bat 文件添加到 PowerShell 脚本以在没有任何用户干预的情况下自动运行它有时可能由于一些应注意的小错误而无法运行。

本文将说明从 PowerShell 脚本运行批处理文件的不同方法。

创建并运行 PowerShell 脚本

要创建 PowerShell 脚本,请打开记事本并添加要执行的命令。以 .ps1 扩展名保存文件以将其保存为 PowerShell 文件。

你可以使用任何文本编辑器来创建文件。

创建 PowerShell 脚本

要运行 PowerShell 脚本,请右键单击 PowerShell 文件,然后单击 Run with PowerShell。你还可以在 PowerShell ISE 中编辑该文件。

运行 PowerShell 脚本

从 PowerShell 脚本运行批处理文件

要从 PowerShell 脚本运行 .bat 文件,请将以下行添加到 PowerShell 脚本:

& .\testfile1.bat

从 PowerShell 脚本运行 BAT 文件

但是,这仅在 testfolder 是相对路径或在路径中使用盘符时有效。可以做出更稳定的方法。

例如,我们有一个名为 testfile.bat.bat 文件,其中包含将输出发送到名为 opt.txt 的文本文件的命令。将批处理文件添加到 PowerShell 脚本以在运行 PowerShell 脚本时自动运行。

将以下行添加到 PowerShell 脚本以运行批处理文件:

cmd.exe /c 'testfile1.bat'

使用 CMD 从 PowerShell 脚本运行 BAT 文件

输出:

从 PowerShell 脚本输出运行 BAT 文件

从 PowerShell 脚本运行批处理文件的另一种方法是使用 Start-Process cmdlet。要运行批处理文件,请将以下代码行添加到 PowerShell 脚本:

Start-Process -FilePath 'C:\Users\Aastha Gas Harda\Desktop\testfile1.bat' -NoNewWindow

使用 Start-Process 从 PowerShell 脚本运行 BAT 文件

其中,

  • -Filepath 指定批处理文件的路径。
  • -NoNewWindow 在当前窗口中启动进程。

要以管理员身份运行批处理文件,请在上面的代码中添加 -verb runas

Start-Process -FilePath 'C:\Users\Aastha Gas Harda\Desktop\testfile1.bat' -Verbose Runas -NoNewWindow

以管理员身份从 PowerShell 脚本运行 BAT 文件

当你的 .bat 文件包含需要管理员权限才能在执行时运行的命令时,此命令很有用。

从 PowerShell 脚本中运行一个带参数的批处理文件

要从包含参数的 PowerShell 脚本运行批处理文件,你可以使用 -ArgumentList 参数并在字符串数组中指定每个参数。通过以上示例,在 PowerShell 脚本中添加以下代码行:

Start-Process -FilePath "cmd.exe" -ArgumentList @("/B", "/C", "`"", "^`"testfile1.bat^`"", "^`"$inputFilePath^`"", "`"") -NoNewWindow;

使用参数从 PowerShell 脚本运行 BAT 文件

从 PowerShell 运行批处理命令

除了批处理文件,你还可以直接从 PowerShell 脚本执行批处理命令。添加以下代码行以执行 echo 命令以将输出打印为 hello world

Start-Process "cmd.exe" '/c echo helloworld' -NoNewWindow

直接从 PowerShell 运行 CMD 命令

结论

因此,我们讨论了如何以最安全的方式从 PowerShell 脚本运行批处理文件。我们还讨论了如何在无需用户干预的情况下直接从 PowerShell 而不是 PowerShell 脚本运行 Batch 命令。