簡體   English   中英

如何使用 powershell 從批處理腳本中運行批處理腳本?

[英]How do I run a batch script from within a batch script using powershell?

如何從 powershell 中的批處理腳本中調用另一個批處理腳本。在 bash 中,我曾經使用 CALL 關鍵字完成此操作。 powershell 中是否有對應的術語?

我的問題基本上是使用批處理文件啟動開發環境,然后使用第二個批處理文件在該環境中運行一些命令。

我嘗試使用類似的東西

& Path\to\my\batchfile.bat -/c'command with spaces'

我期待它用批處理文件打開開發環境並運行提供的命令,但它只是繼續運行批處理文件而不運行其中的命令。

假設您的用例如下:

  • 你想運行批處理文件B.bat
  • 但必須運行批處理文件A.bat ,設置B.bat依賴的環境。
# "foo" and "bar" are sample arguments for B.bat
cmd /c 'c:\path\to\A.bat && c:\path\to\B.bat foo bar'

筆記:

  • 在這種情況下不需要call batch-file 命令; call只需要一個批處理文件中以將控制權返回給調用批處理文件的方式調用另一個批處理文件。

  • 只要A.bat不使用setlocal的情況下設置其變量, B.bat也會看到那些(環境)變量。 [1]


如果A.bat確實使用setlocal - 它將 scope 的變量定義限制為該批處理文件[1] - 並且您無法修改A.bat以刪除此約束,則您的問題沒有解決方案 - 無論您是否從cmd.exe或 PowerShell 調用。(也就是說,除非A.bat恰好設計為接受命令行作為參數執行。)


[1] 與PowerShell不同, cmd.exe所有變量都是環境變量。 但是,可選的setlocal命令允許您將 scope 這樣的變量添加到給定的批處理文件中(並且,當與endlocal調用配對時,甚至可以添加到批處理文件的一部分)。 如需幫助,請運行setlocal /? endlocal /? 來自cmd.exe

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM