저는 코더가 아니며 도움을 주시면 감사하겠습니다.
NAS 위치를 쿼리하고 상위 수준 디렉터리(및 두 번째 수준 아래)의 출력을 생성하는 배치 파일이 필요합니다. 파일 구조는 다음과 같습니다.
\\NAS-ip\home\user1
\\NAS-ip\home\user2
\\NAS-ip\home\user3
\\NAS-ip\home\user4
︙
\\NAS-ip\home\user99
배치 출력은 다음과 같아야 합니다.
\\NAS-ip\home\user1,\\NAS-ip\home\user2,\\NAS-ip\home\user3,\\NAS-ip\home\user4 … etc.
답변1
파워셸:
사람이 읽을 수 있는 것:
(@{Path = '\\NAS-ip\home' ; Levels = '2'} |
ForEach-Object {
Get-ChildItem -Path ($_.Path + ((@('\*') * $_.Levels) -join '')) |
Where-Object {$_.PsIsContainer} | Select-Object -ExpandProperty FullName
}) -join ','
짧막 한 농담:
(@{Path = '\\NAS-ip\home' ; Levels = '2'} | ForEach-Object {Get-ChildItem -Path ($_.Path + ((@('\*') * $_.Levels) -join '')) | Where-Object {$_.PsIsContainer} | Select-Object -ExpandProperty FullName}) -join ','
콤팩트:
(@{Path = '\\NAS-ip\home' ; Levels = '2'} | % {gci ($_.Path + ((@('\*') * $_.Levels) -join '')) | ? {$_.PsIsContainer} | select -Exp FullName}) -join ','
Path
당신이 적합하다고 생각하는 대로 변경하십시오 Levels
. 그리고 파일 이름에 쉼표가 허용되어 모호해질 수 있으므로 구분 기호를 에서 ,
와 같은 것으로 변경하는 것이 좋습니다 . |
구분 기호를 변경하려면 마지막을 -join ','
로 편집하세요 -join '|'
.
보너스: 여러 초기 경로의 하위 디렉터리 목록을 얻으려면 시작 부분에서 해시 테이블을 쉼표로 구분하세요.
(@{Path = '\\NAS-ip\home' ; Levels = '2'}, @{Path = '\\NAS2-ip\somedir' ; Levels = '3'} |
ForEach-Object {
Get-ChildItem -Path ($_.Path + ((@('\*') * $_.Levels) -join '')) |
Where-Object {$_.PsIsContainer} | Select-Object -ExpandProperty FullName
}) -join ','