2012-01-02 84 views
0

我有一個批處理文件,它具有設置變量。我想用值替換每個變量。用批處理文件中的值替換變量

對於例如:我的批處理文件看起來像如下

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

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

同樣,也有很多線。我想用值替換這些變量。例如 而不是%SourceFolder%它應該替換爲值(.... \ release)

如何實現此目的?批處理文件或PowerShell腳本是preferrale

+0

你爲什麼要這麼做?你有什麼嘗試? – manojlds 2012-01-02 06:20:17

+0

我想將我的批處理文件命令轉換爲Msbuild命令。此XCopy Sourcefile目標文件應轉換爲。我想將它轉換爲Xml,但因爲變量要在15個文件中修改。我想自動化它。 – Samselvaprabu 2012-01-02 06:36:48

回答

2

這是我會怎麼做:

$script:[email protected]{} 
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 
+0

哥們,真是太棒了。例如,我只給出了兩個變量。但是我的腳本有許多變量......但是你的腳本像魔術一樣工作......你從哪本書學習Powershell哥們?你正在玩正常的表情,像沙丘tendulkar戲劇與蝙蝠 – Samselvaprabu 2012-01-02 07:17:10

+0

@Samselvaprabu - 大聲笑,比較我對薩欽是我曾經收到過的最好的讚美:) – manojlds 2012-01-02 07:24:38

+0

喜花花公子。當我使用它與多個文件如下它失敗.Foreach($ f在$文件中){ $ script:variables = @ {} gc $ f.fullname | %{if($ _ -match「^ Set(。+?)=(。+)」){$ script:variables [「$($ matches [1])」] = $ matches [2]}} $評估者= { $ group1 = $ args [0] .groups [1] $ script:variables [「$ group1」] } gc $ f.fullname | %{[Regex] :: Replace($ _,「%(。+?)%」,$ evaluateator,[Text.RegularExpressions.RegexOptions] :: none)} | (「E:\ copyforbuild \」+ $ f.basename +「repl」+「。txt」) } – Samselvaprabu 2012-01-02 13:37:55

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 
+0

值是指定好友。例如:Set Sourcefolder = .. \ .. \ Release Sourcefolder是一個變量,值設置在右側。 – Samselvaprabu 2012-01-02 06:43:33

+0

更新了我的回答 – 2012-01-02 07:13:15

+0

哥們你的答案很容易理解,但對這種情況不起作用。你是否有可能使它適用於所有變量和值? (在您的答案變量名稱中進行了硬編碼)對於許多其他人來說,這將會很有用,也很容易理解。預先感謝 – Samselvaprabu 2012-01-02 07:21:04