Domanda

Qualcuno ha uno script di esempio per ricorrere a una determinata directory in un filesystem con Powershell? Alla fine quello che voglio fare è creare uno script che genererà per me una lista di elenchi di file NSIS. Qualcosa di molto simile a ciò che è stato fatto qui con uno script BASH.

È stato utile?

Soluzione

Come halr9000 , puoi usare -recurse parametro di commutazione del cmdlet Get-ChildItem per recuperare tutti i file e le directory in un percorso specificato.

Sembra che lo script bash a cui ti sei collegato nella tua domanda salvi anche le directory, quindi ecco una semplice funzione per restituire sia i file che le directory in un singolo oggetto risultato:

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

  $allItems = Get-ChildItem -path $path -recurse
  $directories = $allItems | ? { 

Come halr9000 , puoi usare -recurse parametro di commutazione del cmdlet Get-ChildItem per recuperare tutti i file e le directory in un percorso specificato.

Sembra che lo script bash a cui ti sei collegato nella tua domanda salvi anche le directory, quindi ecco una semplice funzione per restituire sia i file che le directory in un singolo oggetto risultato:

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

Ecco come è possibile utilizzarlo per creare gli stessi file di testo di installazione / disinstallazione dall'esempio di halr9000, comprese le directory di disinstallazione:

<*>.PSIsContainer } | % {

Come halr9000 , puoi usare -recurse parametro di commutazione del cmdlet Get-ChildItem per recuperare tutti i file e le directory in un percorso specificato.

Sembra che lo script bash a cui ti sei collegato nella tua domanda salvi anche le directory, quindi ecco una semplice funzione per restituire sia i file che le directory in un singolo oggetto risultato:

<*>

Ecco come è possibile utilizzarlo per creare gli stessi file di testo di installazione / disinstallazione dall'esempio di halr9000, comprese le directory di disinstallazione:

<*>.FullName } $installFiles = $allItems | ? { -not

Come halr9000 , puoi usare -recurse parametro di commutazione del cmdlet Get-ChildItem per recuperare tutti i file e le directory in un percorso specificato.

Sembra che lo script bash a cui ti sei collegato nella tua domanda salvi anche le directory, quindi ecco una semplice funzione per restituire sia i file che le directory in un singolo oggetto risultato:

<*>

Ecco come è possibile utilizzarlo per creare gli stessi file di testo di installazione / disinstallazione dall'esempio di halr9000, comprese le directory di disinstallazione:

<*>.PSIsContainer } | % {

Come halr9000 , puoi usare -recurse parametro di commutazione del cmdlet Get-ChildItem per recuperare tutti i file e le directory in un percorso specificato.

Sembra che lo script bash a cui ti sei collegato nella tua domanda salvi anche le directory, quindi ecco una semplice funzione per restituire sia i file che le directory in un singolo oggetto risultato:

<*>

Ecco come è possibile utilizzarlo per creare gli stessi file di testo di installazione / disinstallazione dall'esempio di halr9000, comprese le directory di disinstallazione:

<*>.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 }

Ecco come è possibile utilizzarlo per creare gli stessi file di testo di installazione / disinstallazione dall'esempio di halr9000, comprese le directory di disinstallazione:

<*>

Altri suggerimenti

Questa è una "parafrasi" porta di quello script bash.

$path = "c:\path\to\program"
$installFiles = "installfiles_list.txt"
$uninstFiles = "uninstfiles_list.txt"
$files = get-childitem -path $path -recurse | where-object { ! 

Questa è una "parafrasi" porta di quello script bash.

<*>.psIsContainer } # won't include dirs $filepath = $files | foreach-object {

Questa è una "parafrasi" porta di quello script bash.

<*>.FullName } $filepath | set-content $installFiles -encoding ASCII $filepath[($filepath.length-1)..0] | set-content $uninstFiles -encoding ASCII
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top