문제

Powershell을 사용하여 파일 시스템에서 특정 디렉터리를 반복하기 위한 샘플 스크립트를 가지고 있는 사람이 있나요?궁극적으로 내가 원하는 것은 주어진 디렉토리에 대해 NSIS 파일 목록을 생성하는 스크립트를 만드는 것입니다.수행된 작업과 매우 유사한 작업 여기 BASH 스크립트로.

도움이 되었습니까?

해결책

처럼 halr9000 시연을 통해 다음을 사용할 수 있습니다. -recurse 스위치 매개변수 Get-ChildItem 지정된 경로 아래의 모든 파일과 디렉터리를 검색하는 cmdlet입니다.

귀하의 질문에 연결한 bash 스크립트가 디렉터리도 저장하는 것처럼 보이므로 다음은 단일 결과 개체에 파일과 디렉터리를 모두 반환하는 간단한 함수입니다.

function Get-InstallFiles {
  param( [string]$path )

  $allItems = Get-ChildItem -path $path -recurse
  $directories = $allItems | ? { $_.PSIsContainer } | % { $_.FullName }
  $installFiles = $allItems | ? { -not $_.PSIsContainer } | % { $_.FullName }
  $uninstallFiles = $installFiles[-1..-$installFiles.Length]

  $result = New-Object PSObject
  $result | Add-Member NoteProperty Directories $directories
  $result | Add-Member NoteProperty InstallFiles $installFiles
  $result | Add-Member NoteProperty UninstallFiles $uninstallFiles
  return $result
}

다음은 이를 사용하여 제거 디렉터리를 포함하여 halr9000의 예와 동일한 설치/제거 텍스트 파일을 만드는 방법입니다.

$files = Get-InstallFiles 'C:\some\directory'
$files.InstallFiles | Set-Content 'installfiles.txt'
$files.UninstallFiles + $files.Directories | Set-Content 'uninstallfiles.txt'

다른 팁

이는 해당 bash 스크립트의 "의역" 포트입니다.

$path = "c:\path\to\program"
$installFiles = "installfiles_list.txt"
$uninstFiles = "uninstfiles_list.txt"
$files = get-childitem -path $path -recurse | where-object { ! $_.psIsContainer } # won't include dirs
$filepath = $files | foreach-object { $_.FullName }
$filepath | set-content $installFiles -encoding ASCII
$filepath[($filepath.length-1)..0] | set-content $uninstFiles -encoding ASCII
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top