如何使用Powershell检索递归目录名?

如何使用Powershell检索递归目录名?,powershell,batch-file,Powershell,Batch File,我正在尝试使用Powershell使用cli编译器/链接器自动生成项目。我想将脚本放在项目的根目录中,让它递归地检查所有源文件并编译它们,编译器输出指向与源文件相同的目录。我还想收集*.c的列表作为逗号分隔变量作为链接器的输入。这是典型的情况: //projects/build_script.ps //projects/proj_a/ (contains a bunch of source files) //projects/proj_b/ (contains a bunch of source

我正在尝试使用Powershell使用cli编译器/链接器自动生成项目。我想将脚本放在项目的根目录中,让它递归地检查所有源文件并编译它们,编译器输出指向与源文件相同的目录。我还想收集*.c的列表作为逗号分隔变量作为链接器的输入。这是典型的情况:

//projects/build_script.ps
//projects/proj_a/ (contains a bunch of source files)
//projects/proj_b/ (contains a bunch of source files)
我希望扫描所有子目录并编译每个*.c文件的源代码。这就是我到目前为止所做的:

$compilerLocation = "C:\Program Files (x86)\HI-TECH Software\PICC-18\PRO\9.63\bin\picc18.exe";
$args = "--runtime=default,+clear,+init,-keep";
$Dir = get-childitem C:\projects -recurse
$List = $Dir | where {$_.extension -eq ".c"}
$List | $compilerLocation + "-pass" + $_ + $args + "-output=" + $_.current-directory;

我意识到$\ current directory不是真正的成员,而且我可能在语法方面还有其他问题。很抱歉我的问题含糊不清,我非常愿意进一步解释可能不清楚的地方。

如果我不理解您的确切要求,请原谅。下面是一个递归获取扩展名为.txt的所有文件的示例,然后列出文件名和包含的目录名。为了得到这个,我访问FileInfo对象上的DirectoryName属性值。有关更多信息,请参阅文档

$x = Get-ChildItem . -Recurse -Include "*.txt"
$x | ForEach-Object {Write-Host "FileName: $($_.Name) `nDirectory: $($_.DirectoryName)"}
要查看当前代码,请执行以下操作:

$compilerLocation = "C:\Program Files (x86)\HI-TECH Software\PICC-18\PRO\9.63\bin\picc18.exe";
$args = "--runtime=default,+clear,+init,-keep";
$List = Get-ChildItem C:\project -Recurse -Include *.c
$List | ForEach-Object{#Call your commands for each fileinfo object}

这与我的兴趣相关:)感谢您的快速响应。您正在用PostScript编写构建脚本?硬核…;-)