我有一个批处理文件,它设置了变量。我想用值替换每个变量。
例如:我的批处理文件如下所示
Set Sourcefolder=..\..\Release
Set Variable2=/y /R
Set DestFolder=..\..\Output
XCopy %SourceFolder%\Comp1 %DestFolder%\Comp1 %Variable2%
...
...
..
同样它有很多行。我想用值替换变量。例如 而不是%SourceFolder%它应该替换为值(.... \ release)
如何实现这一目标?批处理文件或Powershell脚本是preferrale
答案 0 :(得分:2)
我就是这样做的:
$script:variables=@{}
gc .\script.bat | %{ if($_ -match "^Set (.+?)=(.+)"){ $script:variables["$($matches[1])"] = $matches[2]}}
$evaluator ={
$group1 = $args[0].groups[1]
$script:variables["$group1"]
}
gc .\script.bat | %{ [Regex]::Replace($_,"%(.+?)%",$evaluator,[Text.RegularExpressions.RegexOptions]::none) } |
out-file .\script2.bat
答案 1 :(得分:1)
试试这个:
$bat = switch -regex -file c:\test.bat
{
'^set Sourcefolder=.+$' {'set Sourcefolder=....\release'}
'^set Variable2=.+$' {'set Sourcefolder=/y /R'}
'^set DestFolder=.+$' {'set Sourcefolder=..\..\Output'}
'%SourceFolder%' {'....\release'}
default {$_}
}
$bat | Out-File c:\test.bat