从 Powershell 脚本运行 BAT 文件
批处理文件由一系列按顺序逐行执行的命令组成。这些批处理文件在 cmd.exe 中执行,这是一个最初为 Windows NT 系列发布的命令行解释器。
同样,PowerShell 文件是由 PowerShell 命令行界面执行的命令列表组成的文本文件;它以 .ps1
扩展名保存。它是适用于 Windows 的最新 shell 和脚本工具,也是更高级的 cmd 版本。
要从 PowerShell 脚本运行 .bat
文件,你可以从 PowerShell 手动运行它。但是,将 .bat
文件添加到 PowerShell 脚本以在没有任何用户干预的情况下自动运行它有时可能由于一些应注意的小错误而无法运行。
本文将说明从 PowerShell 脚本运行批处理文件的不同方法。
创建并运行 PowerShell 脚本
要创建 PowerShell 脚本,请打开记事本并添加要执行的命令。以 .ps1
扩展名保存文件以将其保存为 PowerShell 文件。
你可以使用任何文本编辑器来创建文件。
要运行 PowerShell 脚本,请右键单击 PowerShell 文件,然后单击 Run with PowerShell
。你还可以在 PowerShell ISE 中编辑该文件。
从 PowerShell 脚本运行批处理文件
要从 PowerShell 脚本运行 .bat
文件,请将以下行添加到 PowerShell 脚本:
& .\testfile1.bat
但是,这仅在 testfolder
是相对路径或在路径中使用盘符时有效。可以做出更稳定的方法。
例如,我们有一个名为 testfile.bat
的 .bat
文件,其中包含将输出发送到名为 opt.txt
的文本文件的命令。将批处理文件添加到 PowerShell 脚本以在运行 PowerShell 脚本时自动运行。
将以下行添加到 PowerShell 脚本以运行批处理文件:
cmd.exe /c 'testfile1.bat'
输出:
从 PowerShell 脚本运行批处理文件的另一种方法是使用 Start-Process
cmdlet。要运行批处理文件,请将以下代码行添加到 PowerShell 脚本:
Start-Process -FilePath 'C:\Users\Aastha Gas Harda\Desktop\testfile1.bat' -NoNewWindow
其中,
-Filepath
指定批处理文件的路径。-NoNewWindow
在当前窗口中启动进程。
要以管理员身份运行批处理文件,请在上面的代码中添加 -verb runas
:
Start-Process -FilePath 'C:\Users\Aastha Gas Harda\Desktop\testfile1.bat' -Verbose Runas -NoNewWindow
当你的 .bat
文件包含需要管理员权限才能在执行时运行的命令时,此命令很有用。
从 PowerShell 脚本中运行一个带参数的批处理文件
要从包含参数的 PowerShell 脚本运行批处理文件,你可以使用 -ArgumentList
参数并在字符串数组中指定每个参数。通过以上示例,在 PowerShell 脚本中添加以下代码行:
Start-Process -FilePath "cmd.exe" -ArgumentList @("/B", "/C", "`"", "^`"testfile1.bat^`"", "^`"$inputFilePath^`"", "`"") -NoNewWindow;
从 PowerShell 运行批处理命令
除了批处理文件,你还可以直接从 PowerShell 脚本执行批处理命令。添加以下代码行以执行 echo
命令以将输出打印为 hello world
。
Start-Process "cmd.exe" '/c echo helloworld' -NoNewWindow
结论
因此,我们讨论了如何以最安全的方式从 PowerShell 脚本运行批处理文件。我们还讨论了如何在无需用户干预的情况下直接从 PowerShell 而不是 PowerShell 脚本运行 Batch 命令。