2012-11-06 49 views
2

我想在包含pom.xml文件的Eclipse工作空间的每个目录中运行mvn clean compile使用PowerShell在每个子目录中运行命令

我能含有.svn这样每个目录运行svn update

PS C:\workspace> Get-ChildItem -recurse -force | 
where {$_.name -eq ".svn"} | 
foreach {svn update $_.parent.FullName} 

然而,这使的完整路径svn,并从当前目录运行。需要在目录afaik中运行mvn clean compile。试图做到以下几点,但我只是得到一个错误,说不能为空。似乎是第一个叫它抱怨的cd。我只是有一些语法错误,或者我是否使用foreach错误?

PS C:\workspace> Get-ChildItem -recurse | 
where {$_.name -eq "pom.xml"} | 
foreach { cd $_.parent.name; mvn clean compile; cd ..; } 

回答

7

看起来像$_.parent.FullName属性在第一种情况下工作,因为我只过滤了目录。在这种情况下,我过滤了文件,所以我通过使用$_.DirectoryName来代替它。

PS C:\workspace> Get-ChildItem -recurse | 
where {$_.name -eq "pom.xml"} | 
foreach { cd $_.DirectoryName; mvn clean compile; cd ..; } 
+0

首先,您应该将您的答案标记为已接受。其次,如果我有很多目录,但是每个目录都有一个svn结构树枝,树干等目录,并且我想将其放入该树干文件夹中,然后将其放入另一个文件夹中'toplevel-trunk'然后运行mvn clean package? – snowe