Powershell에서 부모 디렉토리를 가져오려면 어떻게 해야 합니까?
변수에 격납된 디렉토리가 있는 경우는, 다음과 같이 합니다.
$scriptPath = (Get-ScriptDirectory);
이제 상위 2단계 위의 디렉토리를 찾습니다.
좋은 방법이 필요합니다.
$parentPath = Split-Path -parent $scriptPath
$rootPath = Split-Path -parent $parentPath
한 줄의 코드로 rootPath에 접속할 수 있습니까?
디렉토리 버전
get-item
당신의 친절한 도움의 손길입니다
(get-item $scriptPath ).parent.parent
문자열만 원하는 경우
(get-item $scriptPath ).parent.parent.FullName
파일 버전
한다면$scriptPath
파일을 가리키면 전화를 걸어야 합니다.Directory
먼저 속성을 표시하기 때문에 콜은 다음과 같이 표시됩니다.
(get-item $scriptPath).Directory.Parent.Parent.FullName
언급
이 방법은 다음과 같은 경우에만 작동합니다.$scriptPath
존재한다.그렇지 않으면Split-Path
cmdlet.
나는 그것을 다음과 같이 해결했다.
$RootPath = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent
백슬래시에서 분할하고 음의 배열 인덱싱을 사용하는 다음에서 마지막까지 가져와 할아버지 디렉토리 이름만 가져올 수 있습니다.
($scriptpath -split '\\')[-2]
백슬래시를 두 배로 늘려야 정규식에서 벗어날 수 있습니다.
전체 경로를 가져오려면:
($path -split '\\')[0..(($path -split '\\').count -2)] -join '\'
또한 분할 경로의 매개 변수를 살펴보면 경로를 파이프라인 입력으로 사용하기 때문에 다음과 같습니다.
$rootpath = $scriptpath | split-path -parent | split-path -parent
사용할 수 있습니다.
(get-item $scriptPath).Directoryname
문자열 경로를 가져오거나 디렉토리 유형을 지정하려면 다음을 사용합니다.
(get-item $scriptPath).Directory
당신은 단지 많은 수의 체인을 할 수 있다.split-path
필요한 경우:
$rootPath = $scriptPath | split-path | split-path
가장 간단한 해결법
여기 가장 간단한 해결책이 있습니다.
"$path\..\.."
절대 경로를 얻으려면
"$path\..\.." | Convert-Path
재사용 가능한 해결책
여기 재사용 가능한 솔루션이 있습니다.먼저 getParent 함수를 정의한 후 직접 호출합니다.
function getParent($path, [int]$deep = 1) {
$result = $path | Get-Item | ForEach-Object { $_.PSIsContainer ? $_.Parent : $_.Directory }
for ($deep--; $deep -gt 0; $deep--) { $result = getParent $result }
return $result
}
getParent $scriptPath 2
PowerShell 3에서는$PsScriptRoot
아니면 두 부모에 대한 질문을 위해
$dir = ls "$PsScriptRoot\..\.."
Split-Path -Path (Get-Location).Path -Parent
다른 답변을 약간 추측하려면(최대한 초보자 친화적인 방법으로) 다음 절차를 수행합니다.
- 유효한 경로를 가리키는 문자열 개체는 Get-Item 및 Get-ChildItem 등의 함수를 통해 DirectoryInfo/FileInfo 개체로 변환할 수 있습니다.
- .부모는 디렉토리에서만 사용할 수 있습니다.Info 오브젝트
- .Directory는 FileInfo 개체를 디렉토리로 변환합니다.Info 객체(파일의 디렉토리를 대상으로 함)는 다른 유형(다른 디렉토리도 포함)에서 사용할 경우 null을 반환합니다.Info 오브젝트).
- .DirectoryName은 FileInfo 개체를 String 개체(파일 디렉토리 대상)로 변환하고 다른 유형(다른 String 개체도 포함)에서 사용할 경우 null을 반환합니다.
- .FullName은 DirectoryInfo/FileInfo 개체를 String 개체로 변환하고 다른 유형(다른 DirectoryInfo/FileInfo 개체도 포함)에서 사용할 경우 null을 반환합니다.
- .Path는 PathInfo 개체를 String 개체로 변환하고 다른 유형(다른 PathInfo 개체도 포함)에서 사용할 경우 null을 반환합니다.
합니다. GetType은 다음과 같습니다.$scriptPath.GetType()
작성에 이 되는 : 에는 "Get-Item"이 .gi
에는 Get-ChildItem이 .gci
$PSScriptRoot를 사용하려면 다음 작업을 수행합니다.
Join-Path -Path $PSScriptRoot -ChildPath ..\.. -Resolve
powershell의 경우:
$this_script_path = $(Get-Item $($MyInvocation.MyCommand.Path)).DirectoryName
$parent_folder = Split-Path $this_script_path -Leaf
언급URL : https://stackoverflow.com/questions/9725521/how-to-get-the-parents-parent-directory-in-powershell
'IT' 카테고리의 다른 글
조인을 사용한 SQL 업데이트 쿼리 (0) | 2023.04.08 |
---|---|
가장자리가 아닌 div 안쪽에 테두리 배치 (0) | 2023.04.08 |
두 날짜 간의 월차 (0) | 2023.04.08 |
HTML에서 "역할" 속성의 목적은 무엇입니까? (0) | 2023.04.08 |
Woocommerce:제목에서 "아카이브"를 삭제하는 방법 (0) | 2023.04.03 |