使用powershell,我想获取.bat
文件并替换调用set
的所有行以设置环境变量并将其更改为相应的setx
调用。不幸的是,它并不像在文件上进行搜索和替换一样简单,而是将set
替换为setx
,因为语法不同:set ENVNAME=abc
vs setx ENVNAME abc
在PowerShell中有一种简单的方法吗?要为set
替换setx
,我有:
(Get-Content $orig_filename ) | ForEach-Object {$_ -replace "set", "setx"} | Set-Content $new_filename
对于PowerShell新手的任何指针都将不胜感激。
答案 0 :(得分:2)
进行了一些非常有限的测试,我不确定你的bat文件是什么样的,但这可能适合你。
(Get-Content $orig_filename ) | ForEach-Object {
$_ -replace 'set (.*)\=(.*)','setx $1 $2'
} | Set-Content $new_filename
答案 1 :(得分:1)
您也可以将另一个invalid
链接起来为您完成工作。还制作了>通过确保替换字符串开头的单词集,setx替换更容易出错。由于-replace
用作数组运算符,因此您不需要需要 foreach循环。
-replace