我目前正在使用以下命令在文件中进行查找和替换(我搜索了代码并添加了-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命令,但要么出错,要么不做任何更改。
答案 0 :(得分:1)
批处理脚本中定义的变量在批处理脚本启动的PowerShell命令的env:
范围内可用(因为它继承了父脚本的环境):
Set "new_name=example"
powershell -Command "(gc app.php) -replace '/../', \"/../$env:new_name/\" | ..."
请注意,如果在(PowerShell)字符串中使用变量,则必须将该字符串放在双引号中。单引号不起作用。使用CMD的反斜杠转义嵌套的双引号。