使用powershell将批处理脚本中的'set'语句替换为'setx'
使用powershell,我想获取一个使用powershell将批处理脚本中的'set'语句替换为'setx',powershell,Powershell,使用powershell,我想获取一个.bat文件,并替换调用set的所有行,以设置环境变量并将其更改为相应的setx调用。不幸的是,这并不像对文件执行搜索和替换,为setx替换set那样简单,因为语法不同:set ENVNAME=abcvssetx ENVNAME abc 在powershell中有没有一种简单的方法可以做到这一点?只需为setx更换set,我有: (Get-Content $orig_filename ) | ForEach-Object {$_ -replace "set"
.bat
文件,并替换调用set
的所有行,以设置环境变量并将其更改为相应的setx
调用。不幸的是,这并不像对文件执行搜索和替换,为setx
替换set
那样简单,因为语法不同:set ENVNAME=abc
vssetx ENVNAME abc
在powershell中有没有一种简单的方法可以做到这一点?只需为setx
更换set
,我有:
(Get-Content $orig_filename ) | ForEach-Object {$_ -replace "set", "setx"} | Set-Content $new_filename
对于powershell新手的任何建议都将不胜感激。进行了一些非常有限的测试,我不确定您的bat文件是什么样子,但这可能适合您
(Get-Content $orig_filename ) | ForEach-Object {
$_ -replace 'set (.*)\=(.*)','setx $1 $2'
} | Set-Content $new_filename
做了一些非常有限的测试,我不确定你的bat文件是什么样子,但这可能对你有用
(Get-Content $orig_filename ) | ForEach-Object {
$_ -replace 'set (.*)\=(.*)','setx $1 $2'
} | Set-Content $new_filename
做了一些非常有限的测试,我不确定你的bat文件是什么样子,但这可能对你有用
(Get-Content $orig_filename ) | ForEach-Object {
$_ -replace 'set (.*)\=(.*)','setx $1 $2'
} | Set-Content $new_filename
做了一些非常有限的测试,我不确定你的bat文件是什么样子,但这可能对你有用
(Get-Content $orig_filename ) | ForEach-Object {
$_ -replace 'set (.*)\=(.*)','setx $1 $2'
} | Set-Content $new_filename
您也可以链接另一个
-replace
来为您完成这项工作。通过确保替换字符串开头的单词集,还使set>setx替换更不容易出错。由于-replace
作为数组运算符运行,因此不需要foreach循环
(Get-Content $orig_filename ) -replace "^set\b", "setx" -replace "="," " | Set-Content $new_filename
您也可以链接另一个
-replace
来为您完成这项工作。通过确保替换字符串开头的单词集,还使set>setx替换更不容易出错。由于-replace
作为数组运算符运行,因此不需要foreach循环
(Get-Content $orig_filename ) -replace "^set\b", "setx" -replace "="," " | Set-Content $new_filename
您也可以链接另一个
-replace
来为您完成这项工作。通过确保替换字符串开头的单词集,还使set>setx替换更不容易出错。由于-replace
作为数组运算符运行,因此不需要foreach循环
(Get-Content $orig_filename ) -replace "^set\b", "setx" -replace "="," " | Set-Content $new_filename
您也可以链接另一个
-replace
来为您完成这项工作。通过确保替换字符串开头的单词集,还使set>setx替换更不容易出错。由于-replace
作为数组运算符运行,因此不需要foreach循环
(Get-Content $orig_filename ) -replace "^set\b", "setx" -replace "="," " | Set-Content $new_filename
谢谢你的建议。意识到我想要做的事情有点复杂,因为我还需要考虑将
set ABC=
(to unset)转换为setx ABC”“
。想一个不同的策略可能更容易,但仍然需要弄清楚:谢谢你的建议。意识到我想要做的事情有点复杂,因为我还需要考虑将set ABC=
(to unset)转换为setx ABC”“
。想一个不同的策略可能更容易,但仍然需要弄清楚:谢谢你的建议。意识到我想要做的事情有点复杂,因为我还需要考虑将set ABC=
(to unset)转换为setx ABC”“
。想一个不同的策略可能更容易,但仍然需要弄清楚:谢谢你的建议。意识到我想要做的事情有点复杂,因为我还需要考虑将set ABC=
(to unset)转换为setx ABC”“
。想一个不同的策略可能更容易,但仍然需要弄清楚: