Pergunta

Qualquer acontecer de ter um script de exemplo para recursão um determinado diretório em um sistema de arquivos com o PowerShell? Em última análise, o que eu estou querendo fazer é criar um script que irá gerar listas de arquivos NSIS para me dado um diretório. Algo muito semelhante ao que foi feito aqui com um script.

Foi útil?

Solução

Como halr9000 demonstrado, você pode usar o parâmetro de opção -recurse do cmdlet Get-ChildItem para recuperar todos os arquivos e diretórios sob um caminho especificado.

Parece que o script bash é ligada ao na sua pergunta salva os diretórios como bem, então aqui é uma função simples para retornar ambos os arquivos e diretórios em um único objeto de resultado:

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
}

Aqui está como você pode usá-lo para criar os mesmos instalar / desinstalar arquivos de texto com o exemplo de halr9000, incluindo desinstalar diretórios:

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

Outras dicas

Esta é uma porta "paráfrase" desse script 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top