使用PowerShell在每个子目录中运行命令

时间:2012-11-06 10:27:15

标签: powershell

我想在包含mvn clean compile文件的Eclipse工作区的每个目录中运行pom.xml

我能够为包含svn update的每个目录运行.svn,如下所示:

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

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

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

1 个答案:

答案 0 :(得分:7)

似乎$_.parent.FullName属性在第一种情况下工作,因为我只筛选出目录。在这种情况下,我过滤掉了文件,因此我使用$_.DirectoryName代替了它。

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