我有这个脚本:
$appArray | foreach {
$o = $_;
Get-ChildItem .\app\$o\partials -Recurse |
ForEach-Object {
$i = $_;
Write-Host "app/$o/partials/$i";
Write-S3Object `
-BucketName "staging" `
-Key "app/$o/partials/$i" `
-File "app/$o/partials/$i" `
-HeaderCollection @{"Cache-Control" = "public,max-age=3600"}
}
}
该脚本位于
app
目录下面的目录中,因此我想在执行Get-ChildItem
时向上移动一个目录,而我希望“app / ...”从上一个目录开始。我应该使用
/
还是\
,如何为该命令上一个目录?
最佳答案
我使用/
。但是要获取父目录,您应该考虑使用GetParent:
[System.IO.Directory]::GetParent('YOUR_PATH')
或Split-Path cmdlet:
Get-Item 'YOUR_PATH' | Split-Path -parent
或访问属性:
(Get-Item 'YOUR_PATH').parent.fullname
这是您采用的代码。注意:我还使用Join-Path cmdlet合并路径并在第一行中确定脚本目录(否则,脚本仅在当前位置为脚本目录时才起作用):
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
$scriptParentPath = $scriptPath | Split-Path -Parent
$appArray | foreach {
$o = $_;
$currentPath = Join-Path (Join-Path $scriptParentPath $o) 'partials'
Get-ChildItem $currentPath -Recurse |
ForEach-Object {
...
}
}
关于powershell - 我应该在目录字符串中使用/还是\?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36592453/