如何在powershell replace命令中使用变量(来自Windows CMD)

时间:2016-03-05 13:33:02

标签: powershell replace

我目前正在使用以下命令在文件中进行查找和替换(我搜索了代码并添加了-encoding UTF8,因为否则Apache拒绝将该文件作为php文件读取):

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命令,但要么出错,要么不做任何更改。

1 个答案:

答案 0 :(得分:1)

批处理脚本中定义的变量在批处理脚本启动的PowerShell命令的env:范围内可用(因为它继承了父脚本的环境):

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

请注意,如果在(PowerShell)字符串中使用变量,则必须将该字符串放在双引号中。单引号不起作用。使用CMD的反斜杠转义嵌套的双引号。