2009-07-21 7 views
4

Ich versuche, alle svn: Eigenschaft auf eine Reihe von verrohrt Dateien ist:

dir * -include *.cs | Select-String -simplematch -pattern "HeadURL$" | select filename | svn propset svn:keywords "HeadURL Id LastChangedBy LastChangedRevision" $_ 

-I-Fehler erhalten folgende:

svn: Try 'svn help' for more info 
svn: Explicit target required ('HeadURL Id LastChangedBy LastChangedRevision' interpreted as prop value) 

Das Problem ist, dass $ _ nicht auf svn übergeben wird Propset ...

Was ist zu tun?

Antwort

9

Um $_ einen Wert zu haben, müssen Sie ihn in einem Kontext verwenden, in dem er tatsächlich gesetzt ist. Für Ihr spezielles Szenario bedeutet dies, dass Sie Ihren Anruf svn in ein ForEach-Object Cmdlets zu wickeln haben:

dir * -include *.cs | Select-String -simplematch -pattern "HeadURL$" | select filename | % { svn propset svn:keywords "HeadURL Id LastChangedBy LastChangedRevision" $_ } 

(ich die % alias hier der Kürze halber verwendet haben)

Innerhalb dieses ForEach die Variable $_ hat ein Wert und kann verwendet werden.

Ich habe jedoch einige Anwendungen gesehen, bei denen das aktuelle Pipeline-Objekt an die Argumente eines Programms angehängt wurde, wenn es in Nicht-Cmdlets geleitet wurde. Das habe ich bis jetzt jedoch noch nicht vollständig verstanden.

Aber um zu verstehen, was Sie hier tun: Sie versuchen, svn:keywords für jede Datei, die eine dieser verwendet. Ein wahrscheinlich robuster und lesbar Ansatz tatsächlich Filter wäre die Liste, die Sie scannen:

gci * -inc *.cs | 
Where-Object { 
    (Get-Content $_) -match 'HeadURL$' 
} 

(funktionieren könnte, wurden nicht getestet)

können Sie dann einfach weiter, dass in eine Rohrleitung foreach:

| ForEach-Object { 
    svn ps svn:keywords "HeadURL Id LastChangedBy LastChangedRevision" $_.FullName 
} 

auch hier gibt es alle Eigenschaften der Datei-Objekt zugreifen kann und nicht auf das Objekt verlassen müssen Select-String gibt Ihnen.

+0

Hallo. Vielen Dank für deine Hilfe! Ich habe über meine Lösung gebloggt: http://startbigthinksmall.wordpress.com/2009/07/27/setting-svnkeywords-for-specific-files-with-windows-powershell-or-grep-with-powershell/ –

Verwandte Themen