從 Powershell 指令碼執行 BAT 檔案

從 Powershell 指令碼執行 BAT 檔案

  1. 建立並執行 PowerShell 指令碼
  2. 從 PowerShell 指令碼執行批處理檔案
  3. 從 PowerShell 指令碼中執行一個帶引數的批處理檔案
  4. 從 PowerShell 執行批處理命令
  5. 結論

批處理檔案由一系列按順序逐行執行的命令組成。這些批處理檔案在 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 命令。