昔日,我還記得我們曾經用它來作爲cmd
文件的簡單調用運行Windows cmd.exe
內Perl腳本,而不必爲腳本的名稱運行perl.exe
一招,是這樣的:有沒有辦法讓一個可讀的SINGLE cmd/powershell腳本?
@rem = '
@perl -x -S %0 %*
@goto :eof
@rem ';
<insert Perl script here>
這使用了相當整潔的技巧來利用差異來處理輸入腳本,如何使用cmd.exe
和perl.exe
。 Windows'cmd.exe
會將前三行讀作三個單獨的命令:
- 有沒有回聲的評論;
- 用相同的輸入文件和參數運行perl,沒有echo;和
- 轉到文件結束(退出)沒有回聲。
另一方面,perl.exe
會將前四行作爲賦值語句,然後繼續執行正確的Perl腳本。
現在經常是要逃避cmd.exe
命令行PowerShell腳本,因爲你必須使用像一個痛苦:
powershell -file go.ps1
我不知道是否有這兩個批次編碼方式和 PowerShell命令放入一個類似於Perl技巧的單個cmd
文件,開始在cmd.exe
下運行,但在此之後很快切換到Powershell。在命令行
go
,而不是powershell
一些令人費解的調用:
如果這是可能的,你可以簡單地通過進入運行腳本go.cmd
。
我知道你可以運送單獨的cmd
和ps1
文件,但這實際上是我想擺脫的。如果可能,我正在尋找單個文件解決方案。
我也知道你可以base-64編碼你的腳本或者將它作爲一個字符串執行,只要你用分號替換所有換行符。但是這意味着Powershell的東西在結果文件中不再易於編輯或讀取。
的【如何運行DOS批處理文件中的PowerShell腳本(http://stackoverflow.com/questions/2609985/how-to-run-a-powershell-script-within-a-dos-可能重複批處理文件) – 2015-02-24 04:25:18
無賴。是的,這是一個明顯的欺騙,並且接受的答案顯然要優於我的答案。投票結束。 – 2015-02-24 07:52:25