我正在尝试用PowerShell构建一个文件路径,字符串连接看起来有点时髦。
我有一个文件夹列表:
c:\code\MyProj1
c:\code\MyProj2
我想在这里获取DLL文件的路径:
c:\code\MyProj1\bin\debug\MyProj1.dll
c:\code\MyProj2\bin\debug\MyProj2.dll
这是我想要做的:
$buildconfig = "Debug"
Get-ChildItem c:\code | % {
Write-Host $_.FullName + "\" + $buildconfig + "\" + $_ + ".dll"
}
这不管用。我怎么才能修复它?
发布于 2010-10-20 22:07:57
尝尝这个
Get-ChildItem | % { Write-Host "$($_.FullName)\$buildConfig\$($_.Name).dll" }
在代码中,
$build-Config
不是有效的变量名。$.FullName
应为$_.FullName
$
应为$_.Name
发布于 2010-10-20 22:22:00
您可以使用String.Format的PowerShell等效项-这通常是构建字符串的最简单方法。将{0}、{1}等放在字符串中需要的变量位置,将-f
紧跟在字符串后面,然后是用逗号分隔的变量列表。
Get-ChildItem c:\code|%{'{0}\{1}\{2}.dll' -f $_.fullname,$buildconfig,$_.name}
(我还去掉了$buildconfig变量名中的破折号,因为我以前也看到过这会导致问题。)
发布于 2010-10-21 17:28:12
尝试Join-Path cmdlet:
Get-ChildItem c:\code\*\bin\* -Filter *.dll | Foreach-Object {
Join-Path -Path $_.DirectoryName -ChildPath "$buildconfig\$($_.Name)"
}
https://stackoverflow.com/questions/3978639
复制相似问题