>

여기에 내 문제가 있습니다. 부모 감독과 powershell로 만든 모든 하위 디렉토리를 숨기는 방법을 알아 내려고 노력 중입니다. 내가 사용하는 코드는 다음과 같습니다. $f = ni-항목 유형 디렉토리-경로 'C : [이름] [이름] [이름] \'-강제 $f.attributes = '숨겨 짐'  내 문제는 전체 경로가 아닌 마지막 폴더 만 숨길 것입니다. 머리카락과 이빨이 없어 지도록 도와주세요.

$f = ni-항목 유형 디렉토리-경로 'C : [이름] [이름] [이름] \'-강제 $f.attributes = '숨겨 짐'

$f = ni-항목 유형 디렉토리-경로 'C : [이름] [이름] [이름] \'-강제 $f.attributes = '숨겨 짐'

예상 결과는 상위 및 하위 디렉토리를 숨기는 것입니다. 실제로 발생하는 것은 마지막 하위 디렉토리 만 숨겨져 있다는 것입니다.

  • 답변 # 1

    대신 C : \ Name에 속성을 설정하십시오.

  • 답변 # 2

    첫째, 왜 wo 라인입니까? 그들은 똑같은 일을하고 있습니다.

    이것은 PowerShell 관련 문제가 아닙니다. 이것은 Windows 파일 시스템 제약 조건입니다. 따라서 DOS (cmd.exe) 또는 다른 언어 로이 작업을 수행하고 시도한 경우에도 이와 동일한 일이 발생합니다.

    속성은 당신이 전달한 것에 적용됩니다. 디렉토리 트리는 하나의 것이 아니라 컬렉션입니다.

    이 작업을 수행하려면 트리를 반복해야합니다.

    마지막으로 부모를 숨기면 기본적으로 (속성이 설정되지 않은 경우에도) 숨겨져 서 왜 숨겨야하는지 잘 모르겠습니다., 부모 이름을 모르고 자녀를 탐색하지 않는 한 좋습니다. 그러나 숨겨진 물건을 발견하는 방법은 간단합니다. 따라서이 작업으로 무엇을 달성하려고하는지 잘 모르겠습니다.

    어쨌든, 여기 내 뜻은 ...

    New-Item -ItemType Directory -Path 'E:\Parent\Child\GrandChild' -Force
    # Results
    <#
        Directory: E:\Parent\Child
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----         7/7/2019   7:16 PM                GrandChild 
    Notice that doing what you are doing, only returns the last thing, by Windows 
    file system design. This is why you are only getting the setting on the one 
    item.
    #>
    
    # Not all of them that were created - To get all things in a tree, you have to recurse.
    Get-ChildItem -Path 'E:\Parent' -Recurse
    # Results
    <#
        Directory: E:\Parent
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----         7/7/2019   7:16 PM                Child
    
        Directory: E:\Parent\Child
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----         7/7/2019   7:16 PM                GrandChild
    #>
    
    <#
    Since there is no -recurse in New-Item, as per the help files info ...
    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-item?view=powershell-6
    ... after doing the first line to create the tree, iterate to set the attribute 
    on the children and grandchildren, etc., first,  then act on the parent.
    Again, breaking down the object.
    #>
    
    ($NewTree = New-Item -ItemType Directory -Path 'E:\Parent\Child\GrandChild' -Force)
    # Results
    <#
        Directory: E:\Parent\Child
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----         7/7/2019   7:16 PM                GrandChild 
    #>
    $NewTree.Name
    # Results
    # GrandChild
    
    $NewTree.FullName
    # Results
    # E:\Parent\Child\GrandChild
    $NewTree.Parent
    # Results
    <#
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----         7/7/2019   8:10 PM                Child  
    #>
    $NewTree.PSChildName
    # Results
    # GrandChild
    
    Get-ChildItem -Path 'E:\Parent' -Recurse
    # Results 
    <#
     Get-ChildItem -Path 'E:\Parent' -Recurse
    
        Directory: E:\Parent
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----         7/7/2019   8:30 PM                Child
    
        Directory: E:\Parent\Child
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----         7/7/2019   8:30 PM                GrandChild
    #>
    # So, iterate the children and set the attribute
    ($ChildFolders = (Get-ChildItem -Path 'E:\Parent' -Recurse)) | 
    ForEach{$PSItem.Attributes = 'Hidden'}
    # Then set the final parent.
    ($ParentFolder = Get-ChildItem -Directory -Path 'E:\' | 
    Where Name -eq 'Parent').Attributes = 'Hidden'
    Get-ChildItem -Path 'E:\Parent' -Recurse
    # Resutls
    <#
    #>
    
    Get-ChildItem -Path 'E:\Parent' -Force -Recurse
    # Results
    <#
     Get-ChildItem -Path 'E:\Parent' -Force -Recurse
    
        Directory: E:\Parent
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d--h--         7/7/2019   8:39 PM                Child
    
        Directory: E:\Parent\Child
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d--h--         7/7/2019   8:39 PM                GrandChild
    #>
    
    

  • 이전 JavaScript에서 PHP 배열을 반복해야 함
  • 다음 php - 더 깊은 디렉토리에서 중앙 헤더 유지