VS2010 Post-build-event, replace string in eine Datei. Powershell?
Ich ersetzen müssen, die einen einfachen string in einer minified .js-Datei nach erfolgreichem erstellen in VS2010.
So, ich bin versucht zu laufen, ein einfaches Kommandozeilen-Aufruf von der Post-build-Ereignisse-Fenster.
Diesem Beispiel, von hier: https://blogs.technet.com/b/heyscriptingguy/archive/2008/01/17/how-can-i-use-windows-powershell-to-replace-characters-in-a-text-file.aspx völlig mangulates die resultierende .js-Datei. Etwas ist falsch, ich vermute, es kommt auf einige seltsame Zeichen in meine minified .js-Datei, die Schrauben es auf.
(Get-Content C:\Scripts\Test.js) |
Foreach-Object {$_ -replace "//Old JS comment", "//New JS comment"} |
Set-Content C:\Scripts\Test.js
Wie kann ich erreichen, wie eine einfache Aufgabe, wie ich tun konnte, in unix in einer einzigen Zeile..?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wäre es toll zu sehen, wie die diff-Datei. Ohne mehr info, einige Infos:
Set-Content
fügt eine neue leere Zeile am Ende (wahrscheinlich kein problem für Sie)Können Sie
-replace
- Betreiber wie dieser:(gc C:\Scripts\Test.js) -ersetzen Sie 'a','b' | sc C:\Scripts\Test.js
-replace
arbeitet auf arrays zu.[io.file]::ReadAllText('c:\scripts\test.js') and use
-ersetzen`, aber wieder, ich glaube nicht, dass es einen bedeutsamen Unterschied.Edit:
Doppelte Anführungszeichen werden verwendet, wenn die Bewertung der Zeichenfolge. Beispiel:
gibt
Um den Inhalt zu speichern ohne Ende neue Zeile, verwenden Sie einfach
[io.file]::WriteAllText
[io.file]::WriteAllText('c:\scripts\test.js', ((gc C:\Scripts\Test.js) -replace 'a','b' -join "
rn"))