2016-03-05 111 views
0

我目前使用以下命令在文件中執行查找和替換(我使用了代碼並剛添加了-encoding UTF8,因爲否則Apache拒絕讀取該文件作爲一個php文件):如何在powershell中使用變量替換命令(從Windows CMD)

powershell -Command "(gc app.php) -replace '/../', '/../new_project_name/' | Out-File -encoding UTF8 app.php" 

只要文件夾是「new_project_name」,代碼就會工作。 new_project_name實際上應該是一個變量名稱。例如。如果SET new_project_name=example那麼PowerShell的將是如下:

powershell -Command "(gc app.php) -replace '/../', '/../example/' | Out-File -encoding UTF8 app.php" 

我試圖傳遞一個變量的PowerShell命令,但要麼得到錯誤或不進行任何更改。在env:範圍在PowerShell命令從批處理腳本開始(因爲它繼承了父腳本環境)

回答

1

在批處理腳本中定義變量:

Set "new_name=example" 
powershell -Command "(gc app.php) -replace '/../', \"/../$env:new_name/\" | ..." 

請注意,如果您使用的變量裏面(PowerShell)字符串,您必須將該字符串放在雙引號中。單引號不起作用。使用反斜槓爲CMD轉義嵌套雙引號。

+0

謝謝 - 這就是我所需要的。 –