我可以用下面的場景表達我的需要:編寫一個函數,接受一個字符串作爲本機命令運行。如何從字符串執行任意本地命令?
這並沒有太多的想法:如果你與公司其他地方的其他命令行實用程序接口,它提供給你一個命令來運行逐字。由於您不控制命令,您需要接受任何有效命令作爲輸入。這些是主要的打嗝我一直無法容易地克服:
該命令可能在路徑執行程序與生活在其中的空間:
$command = '"C:\Program Files\TheProg\Runit.exe" Hello';
該命令可以有參數帶空格:
$command = 'echo "hello world!"';
該命令可能有單,雙刻度:
$command = "echo `"it`'s`"";
有實現這一點的任何乾淨的方式?我只能設計出奢華和醜陋的解決方法,但對於腳本語言,我覺得這應該是簡單的。
別名是偉大的。請記住,如果您移動到另一臺機器或將該腳本發送給其他別名可能不會設置的其他人。首選PowerShell功能的全名。 – 2011-06-14 01:17:01
@Doug:大部分時間我都是這樣做的,或者使用內置的別名(特別是爲了簡化命令行)。 「eval」的東西是半開玩笑的,因爲這就是其他許多腳本語言所稱的,這不是我見過的第一個問題,那裏有人不知道「invoke-expression」。而OP的情況聽起來只是內部腳本。 – 2011-06-14 01:25:35
我試過這個,但它不起作用: $ command ='「C:\ Program Files \ Windows Media Player \ mplayer2.exe」「H:\ Audio \ Music \ Stevie Wonder \ Stevie Wonder - 迷信。 mp3「' – 2011-06-14 04:40:14