我在執行 powershell 腳本時遇到問題,我想根據一些引數指向不同版本的 bat 檔案
如下硬編碼路徑沒有問題:
& 'C:\Program Files\MATLAB\R2022a\bin\mcc.bat' -W $command -T link:exe ...
但是用變數替換檔案夾名稱會導致它失敗:
$Matlab_version = "R2022a"
& 'C:\Program Files\MATLAB\$Matlab_version\bin\mcc.bat' -W $command -T link:exe
具有以下輸出:
& : The term 'C:\Program Files\MATLAB\%$Matlab_version%\bin\mcc.bat' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:3
& 'C:\Program Files\MATLAB\%$Matlab_version%\bin\mcc.bat' -W $comman ...
我什至嘗試使用路徑名創建變數
$mcc_loc = & 'C:\Program Files\MATLAB\$Matlab_version\bin\mcc.bat'
Write-Host $mcc_loc
這會產生一個具有正確路徑的字串。任何幫助是極大的贊賞。我愚蠢的解決方案是為每個 $Matlab_version 設定一個 if 陳述句并在其中對其進行硬編碼,但我確信必須有一個更優雅的解決方案
uj5u.com熱心網友回復:
這是因為您使用的是單引號。
變數不會在單個標記內解釋,所有內容都將被視為文字字串。
在傳遞變數中間字串時使用雙引號。
例子:

uj5u.com熱心網友回復:
您需要將單引號更改'為雙引號"
雙引號字串 用雙引號括起來的字串是可擴展字串。在將字串傳遞給命令進行處理之前,以美元符號 ($) 開頭的變數名將替換為變數的值。
$Matlab_version = "R2022a"
& "C:\Program Files\MATLAB\$Matlab_version\bin\mcc.bat" -W $command -T link:exe
參見about_Quoting_Rules
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/467583.html
標籤:电源外壳
