用批处理文件中的值替换变量

时间:2012-01-02 05:55:09

标签: powershell batch-file powershell-v2.0

我有一个批处理文件,它设置了变量。我想用值替换每个变量。

例如:我的批处理文件如下所示

Set Sourcefolder=..\..\Release
Set Variable2=/y /R
Set DestFolder=..\..\Output

XCopy %SourceFolder%\Comp1 %DestFolder%\Comp1 %Variable2%
...
...
..

同样它有很多行。我想用值替换变量。例如 而不是%SourceFolder%它应该替换为值(.... \ release)

如何实现这一目标?批处理文件或Powershell脚本是preferrale

2 个答案:

答案 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