VS2010构建后事件,替换文件中的字符串。电源外壳?

时间:2011-02-25 11:07:33

标签: visual-studio-2010 post powershell build

在VS2010中成功构建后,我需要在缩小的.js文件中替换一个简单的字符串。

所以我试图从Post-build事件窗口运行一个简单的命令行调用。

这个例子,从这里开始:https://blogs.technet.com/b/heyscriptingguy/archive/2008/01/17/how-can-i-use-windows-powershell-to-replace-characters-in-a-text-file.aspx完全混淆了生成的.js文件。有些东西是错的,我怀疑它在我的缩小的.js文件中遇到了一些奇怪的字符,搞砸了。

(Get-Content C:\Scripts\Test.js) | 
Foreach-Object {$_ -replace "// Old JS comment", "// New JS comment"} | 
Set-Content C:\Scripts\Test.js

我怎样才能完成像unix一样的简单任务......?

1 个答案:

答案 0 :(得分:4)

看到diff文件会很棒。没有更多信息,一些信息:

  • Set-Content在最后添加一个新的空行(可能不是你的问题)
  • 您可以像这样使用-replace运算符:

    (gc C:\ Scripts \ Test.js) - 替换'a','b'| sc C:\ Scripts \ Test.js

    -replace也适用于数组。

  • 您可以通过[io.file]::ReadAllText('c:\scripts\test.js') and use - 替换来阅读内容,但我不认为会有显着差异。

修改

在评估字符串时使用双引号。例如:

$r = 'x'
$a = 'test'
'beg',1,2,"3x",'4xfour','last' -replace "1|$r","$a"

给出

beg
test
2
3test
4testfour
anything

要保存没有结束新行的内容,只需使用[io.file]::WriteAllText

即可
$repl = (gc C:\Scripts\Test.js) -replace 'a','b' -join "`r`n"
[io.file]::WriteAllText('c:\scripts\test.js', $repl)