Question

Quelqu'un a-t-il un exemple de script permettant de faire rentrer un répertoire dans un système de fichiers avec Powershell? En fin de compte, ce que je veux faire, c'est créer un script qui générera pour moi des listes de fichiers NSIS à partir d'un répertoire. Quelque chose de très similaire à ce qui a été fait ici avec un script BASH.

Était-ce utile?

La solution

Comme l’a montré halr9000 , vous pouvez utiliser le . -recurse paramètre de la cmdlet Get-ChildItem pour extraire tous les fichiers et répertoires sous un chemin spécifié.

Il semble que le script bash auquel vous êtes lié dans votre question enregistre également les répertoires. Voici donc une fonction simple permettant de renvoyer les fichiers et les répertoires dans un seul objet de résultat:

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

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

Comme l’a montré halr9000 , vous pouvez utiliser le . -recurse paramètre de la cmdlet Get-ChildItem pour extraire tous les fichiers et répertoires sous un chemin spécifié.

Il semble que le script bash auquel vous êtes lié dans votre question enregistre également les répertoires. Voici donc une fonction simple permettant de renvoyer les fichiers et les répertoires dans un seul objet de résultat:

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

Voici comment vous pouvez l'utiliser pour créer les mêmes fichiers texte d'installation / de désinstallation à partir de l'exemple de halr9000, y compris les répertoires de désinstallation:

<*>.PSIsContainer } | % {

Comme l’a montré halr9000 , vous pouvez utiliser le . -recurse paramètre de la cmdlet Get-ChildItem pour extraire tous les fichiers et répertoires sous un chemin spécifié.

Il semble que le script bash auquel vous êtes lié dans votre question enregistre également les répertoires. Voici donc une fonction simple permettant de renvoyer les fichiers et les répertoires dans un seul objet de résultat:

<*>

Voici comment vous pouvez l'utiliser pour créer les mêmes fichiers texte d'installation / de désinstallation à partir de l'exemple de halr9000, y compris les répertoires de désinstallation:

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

Comme l’a montré halr9000 , vous pouvez utiliser le . -recurse paramètre de la cmdlet Get-ChildItem pour extraire tous les fichiers et répertoires sous un chemin spécifié.

Il semble que le script bash auquel vous êtes lié dans votre question enregistre également les répertoires. Voici donc une fonction simple permettant de renvoyer les fichiers et les répertoires dans un seul objet de résultat:

<*>

Voici comment vous pouvez l'utiliser pour créer les mêmes fichiers texte d'installation / de désinstallation à partir de l'exemple de halr9000, y compris les répertoires de désinstallation:

<*>.PSIsContainer } | % {

Comme l’a montré halr9000 , vous pouvez utiliser le . -recurse paramètre de la cmdlet Get-ChildItem pour extraire tous les fichiers et répertoires sous un chemin spécifié.

Il semble que le script bash auquel vous êtes lié dans votre question enregistre également les répertoires. Voici donc une fonction simple permettant de renvoyer les fichiers et les répertoires dans un seul objet de résultat:

<*>

Voici comment vous pouvez l'utiliser pour créer les mêmes fichiers texte d'installation / de désinstallation à partir de l'exemple de halr9000, y compris les répertoires de désinstallation:

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

Voici comment vous pouvez l'utiliser pour créer les mêmes fichiers texte d'installation / de désinstallation à partir de l'exemple de halr9000, y compris les répertoires de désinstallation:

<*>

Autres conseils

Ceci est une "paraphrase" port de ce script bash.

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

Ceci est une "paraphrase" port de ce script bash.

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

Ceci est une "paraphrase" port de ce script bash.

<*>.FullName } $filepath | set-content $installFiles -encoding ASCII $filepath[($filepath.length-1)..0] | set-content $uninstFiles -encoding ASCII
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top